Подтвердить что ты не робот

FindViewById для MenuItem возвращает null

Это мой xml файл для меню ActionBar.

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
            android:id="@+id/fav_button"
            android:title="Favourite"
            android:icon="@drawable/unstar"
            android:showAsAction="always|withText" />
</menu>

В моей onCreate функции после вызывается setContentView. Я делаю favButton = (MenuItem) this.findViewById(R.id.fav_button); Но это возвращает null.

Но возвращает правильный объект в функции onOptionsItemSelected.

Я использую ActionBarSherlock, если бы это имело бы значение.

Я пробовал различные варианты, предлагаемые другими findViewById, возвращает нулевые вопросы, но они не решили мою проблему.

4b9b3361

Ответ 1

Вместо

favButton = (MenuItem) this.findViewById(R.id.fav_button);  

в onCreateOptionsMenu после getMenuInflater(). inflate (R.menu.activity_main, menu);

favButton = menu.findItem(R.id.fav_button);

Ответ 2

Используйте menu.findItem(), чтобы получить меню. Но это нужно делать после того, как меню завышено.

Кроме того, чтобы ответить на ваш q в комментарии, вы можете использовать onPrepareOptionsMenu для установки состояния вашего меню. Если это меню является однократным обновлением, вы также можете использовать onCreateOptionsMenu, который вызывается только один раз.