Я получил очень полезные подсказки к моим последним вопросам, надеюсь, на этот раз все будет не так. Во-первых, позвольте мне объяснить ситуацию. У меня есть активность с 2 фрагментами. Для каждого фрагмента у меня есть макет меню xml, первый имеет четыре записи меню, второй - только один. Теперь сначала загружается фрагмент с четырьмя пунктами меню. В методе onCreate я устанавливаю
this.setHasOptionsMenu(true);
метод onCreateOptionsMenu
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fragshow, menu);
}
Файл xml выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_refresh"
android:icon="@drawable/ic_action_search"
android:title="Refresh"
android:visible="true"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_clearall"
android:icon="@drawable/ic_action_search"
android:title="Clear"
android:visible="true"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_addcontent"
android:icon="@drawable/ic_action_search"
android:title="Add Content"
android:visible="true"
android:showAsAction="ifRoom|withText" />
<item android:id="@+id/menu_newlist"
android:icon="@drawable/ic_action_search"
android:title="New List"
android:visible="true"
android:showAsAction="ifRoom|withText" />
</menu>
Это прекрасно работает. Все пункты меню есть, я могу щелкнуть их и ответить. Теперь, когда я нажимаю на меню "Добавить контент", загружается другой фрагмент. Там я также установил
this.setHasOptionsMenu(true);
метод onCreateOptionsMenu
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
Log.i("FragCreateList","onCreateOptionsMenu called");
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fragcreatelist, menu);
}
Файл xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_editdone"
android:icon="@drawable/ic_action_search"
android:title="Edit Done"
android:visible="true"
android:showAsAction="ifRoom|withText" />
</menu>
Но в новом фрагменте я не вижу никаких пунктов меню. Ни в панели действий, ни при нажатии кнопки аппаратного меню. В предыдущем фрагменте в панели действий находилось два пункта меню, остальные два - при нажатии на кнопку аппаратного обеспечения. Но здесь ничего не показано. Я получаю сообщение logcat, которое вызвал метод onCreateOptionsMenu, но ничего не происходит. (Я даже получаю вызов моего (пустого) метода onPrepareOptionsMenu, который следует вызывать прямо перед отображением меню, все еще ничего). Можно ли понять, что может быть неправильным? Вызов invalidateOptionsMenu не делает ничего. Кроме того, я точно не знаю, какой из них вызывать, поскольку есть getActivity(). InvalidateOptionsMenu и getFragmentManager(). InvalidateOptionsMenu... Спасибо заранее.
Изменить:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />