0

I have a MenuItem which I want to make it visible when only ChatListFragment of the FragmentTabHost is selected:

<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <item
        android:id="@+id/action_start_chat"
        android:icon="@drawable/ic_add_black_48dp"
        android:title="@string/action_bar_add_text"
        app:showAsAction="always"
        android:visible="true"/>

</menu>

So I am making it invisable in MainActivity:

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    this.menu = menu;
    addChatItem = menu.findItem(R.id.action_start_chat);
    addChatItem.setVisible(false);
    return super.onCreateOptionsMenu(menu);
}

It is invisable in LoginFragment as I want but I can't make it visible again from ChatListFragment using public metod of the MainActivity:

MainActivity:

public void setAddChatVisibility(boolean visible) {
    addChatItem.setVisible(visible);
    invalidateOptionsMenu();
    supportInvalidateOptionsMenu();
}

ChatListFragment:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_conversation, container, false);
    mainActivity = (MainActivity) getActivity();
    mainActivity.setAddChatVisibility(true);
    return view;
}

How can I do that? Thanks in advance.

Olcay Ertaş
  • 5,987
  • 8
  • 76
  • 112

1 Answers1

1

after invalidateOptionsMenu called method onCreateOptionsMenu(Menu menu) in activity called again cause visible value set false.

you can use onCreateOptionMenu inside fragment onCreateOptionsMenu inside Fragments

Sorry for my bad english

Community
  • 1
  • 1
mlevytskiy
  • 1,555
  • 2
  • 16
  • 26