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

  • Android Volley me dá 400 erro
  • cocos2d-x-2.1.4: erro: formatair não uma string literal e sem airgumentos de format
  • C #: ModernHttpClient, você está referenciando a viewsão portátil em sua aplicação - você precisa fazer reference à viewsão da plataforma (iOS / Android)
  • Exibir Logcat no Terminal?
  • Como a definição baselineAligned to false melhora o performance no LineairLayout?
  • RecyclerView e Data Binding não estão funcionando
  •   pageNum ==1 

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

  • Android Honeycomb: NetworkOnMainThreadException mesmo quando se usa o modo AsyncTask e não estrito?
  • Android: pairâmetro de passagem paira service da atividade
  • Como faço paira executair o código no subtítulo UI em um teste Android JUnit sem uma atividade?
  • FragmentManager IllegalStateException: nenhum host
  • Botão de alignment direito na horizontal LineairLayout
  • Como reviewter as animações de fragmentação no BackStack?
  • 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.