Mam problem z uzyskaniem następującego kodu. Mam viewpager
z 3 fragmentami i chcę, aby ikona wyszukiwania pojawiała się tylko na jednym. Zacząłem próbować dodać funkcję wyszukiwania według fragmentu, ale renderowanie elementu menu było powolne podczas przesuwania do tej strony. Jestem teraz na części, aby dodać ikonę wyszukiwania do aktywności, a potem po prostu ukryć lub pokazać w zależności od viewpager
strona jest aktywna, ale po nie działa:Android: Wyświetlanie pozycji menu paska czynności w zależności od ViewPagera
public class MyApp extends FragmentActivity implements
FragmentTeams.FragmentNotification,ViewPager.OnPageChangeListener,
OnNavigationListener{
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
menuSearch = menu.findItem(R.id.menu_search);
mSearchView = new SearchView(this);
menuSearch.setActionView(mSearchView);
menuSearch.setVisible(false);
return true;
}
@Override
public void onPageSelected(int pageNum) {
if(pageNum== 1){
ActionBar actionBar = MyApp.this.getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
menuSearch.setVisible(true);
invalidateOptionsMenu();
}else{
ActionBar actionBar = MyApp.this.getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
menuSearch.setVisible(false);
invalidateOptionsMenu();
}
}
Chociaż powyższy sposób (wydaje się) tworzenie i ukryć ikonę w onCreateOptionsMenu
, nie jest reenabled po przeniesieniu do
pageNum ==1
Czy ktoś może mi dać pewne wyobrażenie, dlaczego tak się dzieje?
Dzięki za szybką odpowiedź! To działa poprawnie. Jednak od przesunięcia strony do strony i renderowania pozycji menu nadal jest niewielkie opóźnienie. Zamierzam przyjrzeć się nowym aplikacjom Google, ponieważ wygląda na to, że od razu je renderują. – Josh
Jeśli korzystasz z biblioteki pomocy technicznej, to jej 'supportInvalidateOptionsMenu()' – IronBlossom
Nie mogę znaleźć metody getCurrentPage(), czy jest to userdefined czy sam Android? –