2015-02-11 4 views
0

У меня есть 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(); 
} 
+0

Is onPause фактически beign invoked? (Я так не думаю). Поместите лог или тост выше «... setvisible», чтобы проследить его. –

ответ

1

Вам нужно позвонить: invalidateOptionsMenu(); Это будет вызывать onCreateOptionsMenu().

+0

Я изменил свое сообщение 'onCreateOptionsMenu' и' onPause', но не работает. Есть идеи ? – FernandoPaiva

+0

Установите запись меню всегда как невидимую, когда вы введете фрагмент, установите его как видимое. Это должно сработать. –

+0

недействителен Мне нужно сделать это внутри ActionBarActivity или в моем Fragment3? – FernandoPaiva