我对Android开发很新,所以如果这是一个“noobish”问题,我会事先通知。
使用RelativeLayout,我有一个ID为reminderToggle
的ToggleButton:
<ToggleButton
android:id="@+id/reminderToggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/reminderDesc"
android:layout_alignBottom="@+id/reminderDesc"
android:layout_toRightOf="@+id/imageView1"
android:text="ToggleButton" />
我正在使用:
ToggleButton reminderToggle = (ToggleButton)findViewById(R.id.reminderToggle);
然后:
if(reminderToggle.isChecked()) {
在onClick
内的按钮onCreate
内部,以查看ToggleButton的内容。这一切都很好。我不知道我做了什么,但现在应用程序在单击按钮时崩溃了。在LogCat`中,我可以看到
FATAL EXCEPTION: main
java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ToggleButton
at nz.co.kwiius.park.ParkActivity$4.onClick(ParkActivity.java:139)
第139行是:
ToggleButton reminderToggle = (ToggleButton)findViewById(R.id.reminderToggle);
正如您在XML中看到的,reminderToggle是一个ToggleButton。所有这些大惊小怪的是什么? :)
提前致谢, JJ56
PS:提醒切换ID只有一件事,就是这个ToggleButton
答案 0 :(得分:7)
清理并重建它。另外,请确保自动检查构建以避免此类问题。
答案 1 :(得分:0)
如果你已经在ToggleButton之前定义了一个TextView,并且两者都定义了相同的id,那么 在这种情况下,如果你试图获得togglebutton tou wil get class cast exception因为 findViewById()将返回使用xml 中相同ID定义的第一个元素。在以下XML中,使用id reminderToggle定义的第一个元素是TextView。所以你不能使用那个id
获得ToggleButtonToggleButton reminderToggle = (ToggleButton)findViewById(R.id.reminderToggle);// will result you classcast exception for the following xml
<强> XML 强>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/reminderToggle" />"
<ToggleButton
android:id="@+id/reminderToggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ToggleButton" />