アクティビティの 1 つに次のメニュー項目がある Android アプリケーションがあります (名前と MAC 番号のリストの処理に関するものです)。
<item android:id="@+id/menu_sort_tagg"
android:icon="@android:drawable/ic_menu_sort_by_size"
android:title="@string/menu_sort_list" >
<menu>
<group android:checkableBehavior="single">
<item android:id="@+id/sort_by_name"
android:title="@string/sort_by_name" />
<item android:id="@+id/sort_by_mac"
android:title="@string/sort_by_mac" />
</menu>
</item>
また、アプリケーションの状態が変化したときに、次のコードを使用して、前回使用された並べ替えオプション リストの項目を事前に確認できるようにしたいと考えています。
((MenuItem)findViewById(R.id.sort_by_name)).setChecked(true);
問題は、この特定の行でランタイム例外が発生することです。誰かが理由を知っていますか?
ログを見ると、ランタイム例外がヌル ポインター例外によってトリガーされていることがわかります。このようにコードを変更すると、次のようになります。
MenuItem mi = (MenuItem)findViewById(R.id.sort_by_name);
mi.setChecked(true);
seconds ステートメントで例外が発生していることが明らかになります。つまり、MenuItem mi が null です。では、なぜ最初のステートメントが正しい MenuItem へのポインタを持ってこないのでしょうか?