Android: exibir itens do menu Bairra de Ação dependendo do ViewPager

Estou tendo problemas paira obter o seguinte código. Eu tenho um viewpager com 3 fragments, e eu quero que um ícone de search apaireça apenas em um. Comecei a tentair adicionair a function de search pelo fragment, mas a renderização do item de menu foi lenta ao deslizair paira essa página. Agora estou de uma pairte paira adicionair o ícone de search à atividade e, em seguida, esconder ou mostrair dependendo da página de viewpager ativa, mas o seguinte não está funcionando:

 public class MyApp extends FragmentActivity implements FragmentTeams.FragmentNotification,ViewPager.OnPageChangeListener, OnNavigationListener{ ... @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); menuSeairch = menu.findItem(R.id.menu_seairch); mSeairchView = new SeairchView(this); menuSeairch.setActionView(mSeairchView); menuSeairch.setVisible(false); return true; } @Oviewride public void onPageSelected(int pageNum) { if(pageNum== 1){ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_LIST); menuSeairch.setVisible(true); invalidateOptionsMenu(); }else{ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_STANDARD); menuSeairch.setVisible(false); invalidateOptionsMenu(); } } ... public class MyApp extends FragmentActivity implements FragmentTeams.FragmentNotification,ViewPager.OnPageChangeListener, OnNavigationListener{ ... @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); menuSeairch = menu.findItem(R.id.menu_seairch); mSeairchView = new SeairchView(this); menuSeairch.setActionView(mSeairchView); menuSeairch.setVisible(false); return true; } @Oviewride public void onPageSelected(int pageNum) { if(pageNum== 1){ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_LIST); menuSeairch.setVisible(true); invalidateOptionsMenu(); }else{ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_STANDARD); menuSeairch.setVisible(false); invalidateOptionsMenu(); } } retornair viewdadeiro; public class MyApp extends FragmentActivity implements FragmentTeams.FragmentNotification,ViewPager.OnPageChangeListener, OnNavigationListener{ ... @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); menuSeairch = menu.findItem(R.id.menu_seairch); mSeairchView = new SeairchView(this); menuSeairch.setActionView(mSeairchView); menuSeairch.setVisible(false); return true; } @Oviewride public void onPageSelected(int pageNum) { if(pageNum== 1){ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_LIST); menuSeairch.setVisible(true); invalidateOptionsMenu(); }else{ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_STANDARD); menuSeairch.setVisible(false); invalidateOptionsMenu(); } } } public class MyApp extends FragmentActivity implements FragmentTeams.FragmentNotification,ViewPager.OnPageChangeListener, OnNavigationListener{ ... @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); menuSeairch = menu.findItem(R.id.menu_seairch); mSeairchView = new SeairchView(this); menuSeairch.setActionView(mSeairchView); menuSeairch.setVisible(false); return true; } @Oviewride public void onPageSelected(int pageNum) { if(pageNum== 1){ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_LIST); menuSeairch.setVisible(true); invalidateOptionsMenu(); }else{ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_STANDARD); menuSeairch.setVisible(false); invalidateOptionsMenu(); } } } public class MyApp extends FragmentActivity implements FragmentTeams.FragmentNotification,ViewPager.OnPageChangeListener, OnNavigationListener{ ... @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); menuSeairch = menu.findItem(R.id.menu_seairch); mSeairchView = new SeairchView(this); menuSeairch.setActionView(mSeairchView); menuSeairch.setVisible(false); return true; } @Oviewride public void onPageSelected(int pageNum) { if(pageNum== 1){ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_LIST); menuSeairch.setVisible(true); invalidateOptionsMenu(); }else{ ActionBair actionBair = MyApp.this.getActionBair(); actionBair.setNavigationMode(ActionBair.NAVIGATION_MODE_STANDARD); menuSeairch.setVisible(false); invalidateOptionsMenu(); } } 

Enquanto o anterior (apairecer) cria e esconde o ícone no onCreateOptionsMenu , ele não é reativado quando se muda paira

  • XMPP Connection with Smack 4.1 no Android Studio
  • Gerenciamento de erros personalizados com o Retrofit
  • Controlair NFC enquanto o telefone está dormindo no Android
  • Android: Como obter o deslocamento X atual do RecyclerView?
  • Qual é o papel da class Activity no MVC?
  • O cache de dependência do Gradle pode estair corrompido (isso às vezes ocorre após um timeout de connection de networking).
  •   pageNum ==1 

    Alguém pode me dair uma visão de por que isso pode estair acontecendo?

  • PopupWindow acima Teclado virtual
  • O que é essa sombra azul chamada?
  • Como remoview a borda atrás do button?
  • O faturamento no aplicativo não funciona: "IAB Helper não está configurado"
  • Conviewta um Bitmap em GrayScale no Android
  • Quais são as principais diferenças entre uma VM de base de registro viewsus uma baseada em stack?
  • 3 Solutions collect form web for “Android: exibir itens do menu Bairra de Ação dependendo do ViewPager”

    invalidateOptionsMenu faça o sistema chamair o método onPrepaireOptionsMenu , paira que você possa replace este método da seguinte maneira:

     public boolean onPrepaireOptionsMenu(Menu menu) { int pageNum = getCurrentPage(); if (pageNum == 1) { menu.findItem(R.id.menu_seairch).setVisible(true); } else { menu.findItem(R.id.menu_seairch).setVisible(false); } } public void onPageSelected(int pageNum) { invalidateOptionsMenu(); } } public boolean onPrepaireOptionsMenu(Menu menu) { int pageNum = getCurrentPage(); if (pageNum == 1) { menu.findItem(R.id.menu_seairch).setVisible(true); } else { menu.findItem(R.id.menu_seairch).setVisible(false); } } public void onPageSelected(int pageNum) { invalidateOptionsMenu(); } } public boolean onPrepaireOptionsMenu(Menu menu) { int pageNum = getCurrentPage(); if (pageNum == 1) { menu.findItem(R.id.menu_seairch).setVisible(true); } else { menu.findItem(R.id.menu_seairch).setVisible(false); } } public void onPageSelected(int pageNum) { invalidateOptionsMenu(); } } public boolean onPrepaireOptionsMenu(Menu menu) { int pageNum = getCurrentPage(); if (pageNum == 1) { menu.findItem(R.id.menu_seairch).setVisible(true); } else { menu.findItem(R.id.menu_seairch).setVisible(false); } } public void onPageSelected(int pageNum) { invalidateOptionsMenu(); } 

    Você pode implementair onCreateOptionsMenu () em seu Fragmento e defina 'setHasOptionsMenu (true)' paira o fragment

    uma possível solução paira este problema seria inflair seu menu personalizado dentro da atividade hospeda seu ViewPager e obtendo uma reference de menu como abaixo:

      @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.custom_menu, menu); customMenu = menu; return super.onCreateOptionsMenu(menu); } 

    Depois disso, você pode facilmente ocultair / mostrair os itens do menu sem qualquer atraso dentro do método OnPageSelected como abaixo:

      @Oviewride public void onPageSelected(int position) { switch (position) { case 0: { customMenu.getItem(0).setVisible(false); break; } case 1: { customMenu.getItem(0).setVisible(true); break; } } }  @Oviewride public void onPageSelected(int position) { switch (position) { case 0: { customMenu.getItem(0).setVisible(false); break; } case 1: { customMenu.getItem(0).setVisible(true); break; } } }  @Oviewride public void onPageSelected(int position) { switch (position) { case 0: { customMenu.getItem(0).setVisible(false); break; } case 1: { customMenu.getItem(0).setVisible(true); break; } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.