【问题标题】:checkbox.isChecked return "null" : Why ?! - Androidcheckbox.isChecked 返回“null”:为什么?! - 安卓
【发布时间】: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


【解决方案1】:

错误表明您的 CheckBox 视图为空。

确保以下行返回一个有效的 CheckBox 对象而不是 null:

chkBoxSaveID = (CheckBox) findViewById(R.id.preferencecheckBoxSaveID);

【讨论】:

  • 嗨 MarkySmarky。以下行返回一个非空对象。你知道我的错误在哪里吗?