"Cannot cast TextView to ToggleButton",但它是一个切换按钮



我对Android开发非常陌生,所以如果这是一个"菜鸟"问题,我提前道歉。

使用RelativeLayout,我有一个ToggleButton的ID为reminderToggle:

<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为reminderToggle,这是这个ToggleButton

老兄,清理并重建它。还要确保总是自动检查构建,以避免此类问题。

如果您在ToggleButton之前定义了一个TextView,并且两者都定义了相同的id,那么 在这种情况下,如果您试图获得ToggleButton,您将获得类强制转换异常,因为findViewById()将返回您使用相同id定义的第一个元素在该xml。在下面的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" />

最新更新