使用HoloEverywhere的SeekBar,如下:
import org.holoeverywhere.widget.SeekBar;
import org.holoeverywhere.widget.SeekBar.OnSeekBarChangeListener;
最開始運行正常,到了編譯的時候,在下面這行報出ClassCastException異常:
sectionTimeElapsedSeekBar = (SeekBar) findViewById(R.id.sectionTimeElapsedSeekBar);
下面的是相應的XML文件:
<SeekBar
android:id="@+id/sectionTimeElapsedSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/startOrPauseTimerButton"
android:layout_alignParentLeft="true"
android:layout_marginBottom="16dp"
android:max="2100" />
布局文件裡申明的seekbar默認是android.widget.SeekBar, findViewById(id)得到的也是android.widget.SeekBar,而你使用的是org.holoeverywhere.widget.SeekBar,並將android.widget.SeekBar強制轉換成org.holoeverywhere.widget.SeekBar了,這裡的兩個seekbar並不是一同一個類,要麼org.holoeverywhere.widget.SeekBar是和ndroid.widget.SeekBar類似的類,要麼就是ndroid.widget.SeekBar的子類,你這樣強制轉換當然會出異常。你可以在布局文件中這樣申明:
<org.holoeverywhere.widget.SeekBar
android:id="@+id/sectionTimeElapsedSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/startOrPauseTimerButton"
android:layout_alignParentLeft="true"
android:layout_marginBottom="16dp"
android:max="2100" />
使用時是這樣的:
sectionTimeElapsedSeekBar = (org.holoeverywhere.widget.SeekBar) findViewById(R.id.sectionTimeElapsedSeekBar);