2016-01-05 2 views
1

Я изо всех сил старался реализовать переключаемую видимость опции Share в меню между фрагментами. Я использую скользящую компоновку вкладок и имеет фрагмент на каждой из двух вкладок. Первая вкладка (использует просмотр списка) и когда элемент выбран, я устанавливаю флаг как истинный и вызывает invalidateOptionsMenu(), и он отлично работает, показывая опцию share в меню панели приложений, но я не могу отменить ее, когда Я перехожу к другому фрагменту, который имеет в основном предпочтения. Код аналогичен приведенному ниже.Параметры настройки общего доступа к настройкам Android на фрагментах, управляемых вкладками в скользящей вкладке.

public void setSharedIntentText(String text) { 
sharedText = text; 
if (shareOptionVisibility == false) { 
    shareOptionVisibility = true; 
    invalidateOptionsMenu(); 
} 


public boolean onCreateOptionsMenu(Menu menu) { 
// Inflate the menu; this adds items to the action bar if it is present. 
getMenuInflater().inflate(R.menu.menu_main, menu); 
// Locate MenuItem with ShareActionProvider 
MenuItem shareItem = menu.findItem(R.id.menu_share); 
// Fetch and store ShareActionProvider 
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.setType("text/plain"); 
sendIntent.putExtra(Intent.EXTRA_TEXT, sharedText); 
mShareActionProvider.setShareIntent(sendIntent); 
shareItem.setVisible(shareOptionVisibility); 

При переключении между вкладками видимость должна быть установлена ​​соответствующим образом. Я попытался установить его onPause метод первого фрагмента, а затем метод onResume второго фрагмента, но управление, похоже, не приводит эти методы, когда я смотрю на logcat. Код, который я использовал для определения видимости на false, приведен ниже в фрагменте2.

public void onResume() { 
super.onResume(); 
Log.i(TAG, "On Resume "); 
((MainActivity) getActivity()).shareOptionVisibility = false; 
((MainActivity) getActivity()).invalidateOptionsMenu(); 
} 

Так хотелось бы знать, где лучшее место, чтобы поместить код для управления видимостью при переходе между вкладками. Вот список классов, которые я использую. MainActivity, фрагмент1, фрагмент2, SlidingTabLayout, SlidingTabStrip и ViewPagerAdaptor. Этот код был реализован поверх примера com.example.android.actionbarcompat.shareactionprovider.

Заранее спасибо

ответ

0

Проблема Теперь решена путем реализации способа onCreateOptionsMenu от фрагмента, а не от MainActivity. Thanks