0

我有一个带有复选框的 Activity,它触发 onCheckedChanged(),我使用它来初始化它。

setContentView(R.layout.signup_welcome);
CheckBox check = (CheckBox) findViewById(R.id.checkbox_accept);
check.setOnCheckedChangeListener(this);

有什么奇怪的,但有一段时间它会导致 NullPointerException。我应该只使用 (MainActivity.this) 而不是 (this) 吗?两者有区别吗?

一件事我在不同的布局中有相同的ID。应该是原因吗?但我认为这很好,因为我使用的是视图。

日志:

4

3 回答 3

1

this不会抛出一个NullPointerException,但是check可能是null并且在它上面调用一个方法会抛出一个 NPE。

于 2013-09-27T08:08:39.993 回答
0

任何一个check视图都没有参考,或者您没有OnCheckedChangeListenerActivity.

于 2013-09-27T08:10:32.710 回答
0

首先,确保调用findViewById. 如果你在 a 中Activity,你应该使用setContentView,如果你在扩展 a View,使用 a LayoutInflater

然后,您需要确保具有该 id 的View(CheckBox在您的情况下) 存在于您的布局中。

然后,您需要确保id传递给的 (resource id)findViewById与布局文件中的匹配。

如果上述失败,请尝试进行全新的清理/构建(R当您仅编辑布局 XML 时,有时不会在设备/模拟器上重新生成/重新部署)。

于 2013-09-27T08:27:36.157 回答