2012-06-02 14 views
6

Mam fragment, który zastępuję innym, jednocześnie dodając transakcję do tylnego stosu. Oba moje fragmenty udostępniają elementy menu na pasku akcji za pomocą ActionBarSherlock. Mam jednak problem - w moim drugim fragmencie pasek akcji pokazuje zarówno fragment pierwszego, jak i drugiego fragmentu; Chcę tylko przedmiotów drugiego. Czy jest jakiś sposób, aby to osiągnąć?Jak usunąć elementy menu fragmentów stosu?

(Używam również bibliotekę support).

+1

wymyśliłeś to? – Hades

+1

wymyśliłeś to? –

Odpowiedz

3

Jeśli chcesz zaktualizować ikon paska akcji, można zastąpić onCreateOptionsMenu() w aktywności określić, które menu jest wykorzystywana do aktywnego fragmentu. Następnie wywołaj metodę invalidateOptionsMenu() po wymianie fragmentów, aby odtworzyć menu.

Jeśli używasz tylko menu rozwijanego, możesz zastąpić onPrepareOptionsMenu() i dodać/usunąć elementy z menu.

+0

Jak zdefiniować menu do użycia? Czy istnieje metoda wybrania, które fragmenty mają wywoływać 'onCreateOptionsMenu'? – jmgrosen

+0

będziesz musiał podać tę logikę. To będzie zależeć od twojej implementacji. Możesz sprawdzić, który fragment jest widoczny lub śledzić go za pomocą zmiennej instancji. – Jereld

+2

Myślę, że źle zrozumiałeś. Używam 'onCreateOptionsMenu' _in_ moich fragmentów iz tego co wiem, nie ma sposobu, aby selektywnie wybrać i wybrać menu opcji fragmentów, które chcę użyć. – jmgrosen

0

Możliwe, że w pierwszym fragmencie został ViewPager z getFragmentManager() przekazany do konstruktora FragmentPagerAdapter. A następnie spróbowałeś przejść do drugiego fragmentu używając tego samego getFragmentManager().

Jeśli tak, to prześlij getChildFragmentManager() do FragmentPagerAdapter.

Powiązane problemy