我对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
来获取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" />