Mam aktywność pokazującą kilka fragmentów. Widok aktywności zawiera tylko ViewPager zainicjowany niestandardowym FragmentPagerAdapter. Ten adapter zapewnia nawigację wśród 3 fragmentów.Android: Jak odtworzyć pasek akcji po zmianie fragmentu
Wszystko wydaje się działać poprawnie, z wyjątkiem paska czynności.
zastąpić metodę onCreateOptionsMenu() w moim fragmentów stworzyć indywidualny pasek działania na każdym fragmencie: Kiedy zrobić bezstykowa, pojawia się nowy fragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
//fragment specific menu creation
}
, ale bar działania pozostają takie same przez kilka sekund. Prawdopodobnie po kilku sekundach wywoływana jest ta metoda i zmienia się pasek akcji.
Wygląda całkiem nieźle, gdy pasek akcji zostanie zmieniony po chwili przesuwania. Jak odtworzyć pasek akcji natychmiast, zanim zacznie się przeciąganie?
Problem jest nie mogłem znajdź jakiś oczywisty sposób, aby poprosić Androida o odtworzenie paska akcji. –
@Mik Zaktualizowałem swoją odpowiedź, aby pomóc, ale naprawdę nie rozumiem cię w pełni ... invalidateOptionsMenu() powinien "poprosić androida o ponowne utworzenie paska akcji" – roarster
Dzięki, za odpowiedź, ale 1. Kiedy ty wywołać .invalidateOptionsMenu(); system tak naprawdę nie odtwarza paska akcji. Powoduje tylko wywołanie onCreateOptionsMenu() w twoim fragmencie, co pozwala ci zmienić Menu (które jest częścią paska akcji). Jeśli wywołałeś setHasOptionsMenu (true) w twoim fragmencie, to nie musisz nawet wywoływać metody invalidateOptionsMenu(), ponieważ onCreateOptionsMenu() jest wywoływana automatycznie. 2. Nie mogłem znaleźć sposobu wywoływania w CreateOptionsMenu() przed wykonaniem przesunięcia. –