“无法将TextView强制转换为ToggleButton”,但它是一个ToggleButton

时间:2011-12-16 04:29:40

标签: android textview togglebutton

我对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

2 个答案:

答案 0 :(得分:7)

清理并重建它。另外,请确保自动检查构建以避免此类问题。

答案 1 :(得分:0)

如果你已经在ToggleButton之前定义了一个TextView,并且两者都定义了相同的id,那么 在这种情况下,如果你试图获得togglebutton tou wil get class cast exception因为 findViewById()将返回使用xml 中相同ID定义的第一个元素。在以下XML中,使用id reminderToggle定义的第一个元素是TextView。所以你不能使用那个id

获得ToggleButton
ToggleButton 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" />