ActionBarCompat + раздели: премахване на елемент от менюто на фрагмент при превключване?

За всеки фрагмент ще добавя елементи от менюто, за да предоставя на потребителя действия, свързани с контекста. Но при превключване към друг фрагмент, елементите от менюто останаха. Така че мога да завърша с всички опции от всеки фрагмент в менюто.

Как почиствате елемента от менюто, за да имате само тези, зададени в менюто за дейности?

Четох за invalidateOptionMenu() и onPrepareOPtionmenu(), но наистина не разбирам как работят. Кой е правилният начин за прилагането му?

Както и да е, как става така, че премахването на елемент от менюто, свързан с фрагмент, когато фрагментът вече не се показва, не е родно поведение на Android?

РЕДАКТИРАЙТЕ, ако инструкциите не са достатъчно ясни.

  • Имам една дейност, поддържаща Navigation_Mode_Tabs с настройки като глобален елемент от менюто.
  • Стартирам fragA, който добавя itemA1 и itemA2. Така че имам настройка, itemA1, itemA2. Дотук добре.
  • След това преминавам към fragB, който добавя свой собствен itemB. ТУК имам настройки, елемент A1, елемент A2, елемент B в менюто!

Защо itemA1 и itemA2 са блокирани? Как да ги премахнете?

РЕДАКТИРАНЕ 2: Опитах друга настройка на табулиране от това публикуване и изведнъж елементите от менюто изглеждат правилно премахнати! Това е нещо, което можете да видите с използването на remove(R.id.container, fragment) срещу onDetach()/onAttach(), което Google препоръчва тук

Гледам това, вероятно утре ще го актуализирам. Моля, ако знаете за това, споделете :)


person Poutrathor    schedule 13.08.2013    source източник


Отговори (2)


можете да зададете менюто за надуване на всяка дейност.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.demo, menu);
    return true;
}
person JavaDM    schedule 13.08.2013
comment
? Имам една дейност и няколко фрагмента за всяка, която използвам onCreateOptionsMenu, за да настроя елемента от менюто. Не разбирам как това може да реши проблема ми, но благодаря - person Poutrathor; 13.08.2013
comment
ако извикате друг фрагмент, можете да замените текущото меню с опции - person JavaDM; 13.08.2013
comment
да, това е, което правя. Не знам друг начин за добавяне на свързано с фрагменти меню с елементи. - person Poutrathor; 13.08.2013

Трябва да добавите TabListener към вашите раздели и да извикате метода supportInvalidateOptionsMenu() в onTabSelected(). Това предизвиква повикване onCreateOptionsMenu(). Трябва да го замените във вашата дейност и да разширите менюто за избрания фрагмент. Ако добавите елементи от менюто от код, не забравяйте да изчистите менюто за предишния фрагмент.

person Alex Askerov    schedule 13.08.2013
comment
Вече опитах с invalidateOptionMenu() в onTabSelect(). Не използвам поддръжка, защото имам appcompat ActionBarActivity. Вижте последната ми редакция, ако все още се интересувате от този проблем. - person Poutrathor; 13.08.2013