0

onCheckedChanged() をトリガーするチェックボックス付きのアクティビティがあり、それを使用して初期化しています。

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

それが機能するのは奇妙なことですが、NullPointerExceptionが発生することがあります。(this) のみの代わりに (MainActivity.this) を使用する必要がありますか? 両者に違いはありますか?

同じ ID を別のレイアウトで持っていることが 1 つあります。それが原因なのだろうか?ビューを使用しているので、それで問題ないと思います。

ログ:

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。にいる場合はActivityを使用setContentViewし、 を拡張している場合は をView使用する必要がありますLayoutInflater

View次に、その ID を持つ(CheckBoxあなたの場合) がレイアウトに存在することを確認する必要があります。

id次に、渡された (リソース ID) がfindViewByIdレイアウト ファイル内のものと一致することを確認する必要があります。

上記が失敗した場合は、新しいクリーン/ビルドを試してください (Rレイアウト XML のみを編集している場合、デバイス/エミュレーターで再生成/再デプロイされないことがあります)。

于 2013-09-27T08:27:36.157 に答える