У меня есть 3 Fragments
, и в Fragment3
Я хочу, чтобы отобразить значок в моем ActionBar
, это работает отлично, но когда я вернулся к другим фрагментам, как Fragment1 и FRAGMENT2 значок остаться visible(true)
Я попытался добавить item.setVisible(false)
в фрагмента, но не работает, и значок остается в других местах Fragments
Кнопка в ActionBar настройка видимости?
Как его решить?
XML
<item
android:id="@+id/action_chat"
android:icon="@drawable/batalha_icon_chat"
android:title="Chat"
app:showAsAction="ifRoom"
android:visible="true"
/>
Фрагмент
public class Fragment3 extends Fragment implements View.OnClickListener {
private Menu mMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.battle_chat, menu);
mMenu = menu;
MenuItem mi = mMenu.findItem(R.id.action_chat);
if(this.isVisible()){
Log.i("VISIBLE->", "true");
mi.setVisible(true);
}else{
Log.i("VISIBLE->", "false");
mi.setVisible(false);
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_chat:
Fragment frag = new HelloBubblesActivity();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fl, frag,"HelloBubblesActivity");
ft.commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onPause() {
super.onPause();
//API 9
getActivity().supportInvalidateOptionsMenu();
}
Is onPause фактически beign invoked? (Я так не думаю). Поместите лог или тост выше «... setvisible», чтобы проследить его. –