【发布时间】:2025-12-01 08:25:01
【问题描述】:
我在活动中放置了一个复选框。
这是 XML:
<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/preference_storingIDs" android:id="@+id/preferencecheckBoxSaveID" android:layout_below="@+id/preferenceImageButtonURL" android:layout_alignRight="@+id/preferenceImageButtonURL" android:layout_alignEnd="@+id/preferenceImageButtonURL" android:checked="true" />
在代码中:
正在初始化:
public CheckBox chkBoxSaveID;
并设置复选框:
chkBoxSaveID = (CheckBox) findViewById(R.id.preferencecheckBoxSaveID);
在其他活动中,同样的事情:
CheckBox chkBoxSaveID;
chkBoxSaveID = (CheckBox) findViewById(R.id.preferencecheckBoxSaveID);
然后,我创建了一个 if 条件。
if(chkBoxSaveID.isChecked()){
do blabla
}
else {
do blabla }
但是,当我运行模拟器时,我遇到了这个错误:
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean android.widget.Checkbox.isChecked()”
我不明白为什么。我尝试将值固定为“True”,但它是相同的。 能给我解释一下吗?
问候,
【问题讨论】:
-
WILD GUESS:您没有将 ContentView 设置为包含该复选框的相同布局。所以找不到那个CheckBox,返回null。
-
嗨,Der Gol...lum,感谢您的帮助。如果我理解,在我使用复选框之前,我需要像这样修改 ContentView:> setContentView(R.layout.activity_preferences_accueil);复选框在布局首选项上,我需要检查登录布局中复选框的状态。
-
是的。如果当前布局中没有视图,
findViewById()将找不到该视图。 -
所以我可以写这样的东西吗? setContentView(R.layout.activity_preferences_accueil); chkBoxSaveID = (CheckBox) findViewById(R.id.preferencecheckBoxSaveID); // 用我的复选框测试 setContentView(R.layout.Activiy_login);
-
谢谢,我会检查的。
标签: android checkbox ischecked