Установите пункт меню, как проверено из кода

У меня есть Android-приложение со следующим пунктом меню в одном из Action'ов (которое касается работы со списком имен и номеров макросов):

<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);

становится понятно, что исключение происходит в секундном операторе, т.е. MenuItem mi равен нулю. Так почему же первое утверждение не приводит указатель на корректный MenuItem?

16
задан Robert Granat 27 May 2011 в 09:52
поделиться