Я делаю приложение для Android и пытаюсь применить код java к элементам меню xml, но они не накачаны. У меня есть некоторые пункты меню, определенные в моем файл меню XML (хранится в Резе/меню/main.xml) определяются следующим образом:Элементы меню Android, которые никогда не накачиваются
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".HomeActivity"
app:showAsAction="always">
<item android:id="@+id/action_close"
android:title="Close"
android:icon="@drawable/exitediting"
android:enabled="false"
app:showAsAction="always"/>
<item android:id="@+id/action_edit"
android:title="Edit"
android:icon="@drawable/editbutton"
android:enabled="false"
app:showAsAction="always"/>
<item android:id="@+id/action_mainedit"
android:title="MainEdit"
android:icon="@drawable/exitediting"
android:enabled="true"
app:showAsAction="always"/>
</menu>
В моем основном коде активности Java, то я переопределить инфлятор меню следующим образом:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
createAnimatorSets();
return true;
}
Тогда в моей функции createAnimatorSets я пробую и получить доступ к кнопкам, как этот
final ActionMenuItemView editButton = (ActionMenuItemView) toolbar.getChildAt(1).findViewById(R.id.action_edit);
final ActionMenuItemView closeButton = (ActionMenuItemView) toolbar.getChildAt(1).findViewById(R.id.action_close);
final ActionMenuItemView mainButton = (ActionMenuItemView) toolbar.getChildAt(1).findViewById(R.id.action_mainedit);
Это просто возвращает нуль. Я попытался поставить точку прерывания в этот момент в коде и посмотреть несколько переменных. R.id.action_edit возвращает id, как ожидалось, но оба findViewById (R.id.action_edit) и toolbar.getChildAt (1) .findViewById (R.id.action_edit) возвращают значение null. Сама панель инструментов (панель имен переменных) находится там, и кнопки хранятся внутри, но по какой-то причине они не накачаны, чтобы их можно было использовать. Я также пытался сделать это в методе onStart, а не onCreate, но это тоже не работает. Кто-нибудь знает, как это исправить.
Благодаря
Попробуйте добавить sethasoptionsmenu (true) по методу oncreate – Catalina
@ Каталина Я видел это где-то еще, когда пытался ее решить. Этот метод применим только к фрагментам, а не к основной деятельности. – kabeersvohra