2015-08-03 4 views
1

Я использую view pager вкладки, используя toolbar как android action bar.Android меню опций удалить на просмотр пейджер

В настоящее время в одном из моих tab, я создаю menu только для этого fragment, его прекрасно работать, как я набор меню Option для истинно на этой fragment.

Вопрос в том, как я могу удалить меню, когда пользователь скользит в разные tab или на другом tab.

, что является лучшей процедурой для этого.

Я создаю меню опций в фрагменте как этот

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     setHasOptionsMenu(true); 
    } 

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     // TODO Auto-generated method stub 
     inflater.inflate(R.menu.custommenu, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 
+0

setHasOptionsMenu (ложь); к этому конкретному фрагменту. –

ответ

0

В вашем mainactivity сделать это в addonpagechangelistener вашей ViewPager в

ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

    } 

    @Override 
    public void onPageSelected(int position) { 

     // Do your work here 
     // Set your menu from here according to the position 
     // followed by invalidateoptionsmenu() 


    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 

    } 
}); 
+0

У меня уже есть OnPageChangeListener, можете ли вы уточнить, как удалить меню с выбранной страницы? –

+0

также обратите внимание, что моя версия min sdk равна 9, вызов invalidateoptionsmenu() требует min api 11. –

+0

затем используйте setHasOptionsMenu (false); в картине вашего фрагмента. – Madhav

1

вам нужно иметь setHasOptionsMenu(true); во всех ваших фрагментов

и переопределить как bel вл во всех фрагментах

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
{ 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.clear(); 
    //fragment specific menu creation 
} 

И вам нужно добавить ViewPager у слушателя, а также предложил @Madhav

+0

Ну, я могу, но я не хочу, вызывать в моей основной деятельности. У меня есть одно или два меню по умолчанию, которые доступны для всего фрагмента, и некоторые фрагменты меню, поэтому я не могу использовать menu.clear() –