问题描述
- SeekBar报出ClassCastException
- 使用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);
解决方案二:
你用的seekbar不是系统的seekar,是你自定义的吧,所以才会类型转换错误
时间: 2024-09-12 08:38:33