How to change the options menu in different fragments?

I have a snippet with a menu:

public class FragmentA extends Fragment { public FragmentA() { setHasOptionsMenu(true); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.activity_main_actions, menu); super.onCreateOptionsMenu(menu, inflater); } } 

I would like to change the menu, but it does not work and keep the old action menu

Slice B is equal to the above with another XML bloat menu.

 public class FragmentB extends Fragment { public FragmentB() { setHasOptionsMenu(true); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.**action_ranking**, menu); super.onCreateOptionsMenu(menu, inflater); } } 

Edition:

It may be useful to use a different menu layout for different fragments and 1 menu layout for the main activity and identifier of different

+11
java android android-actionbar android-fragments android-menu
source share
2 answers

Put setHasOptionsMenu(true) in the constructor and inflate the fragment-specific menu.

 public class FragmentA extends Fragment { public FragmentA() { setHasOptionsMenu(true); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.fragmenta_menu, menu); super.onCreateOptionsMenu(menu, inflater); } } 

in the main action

 public class MainActivity extends Activity { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.main_menu, menu); super.onCreateOptionsMenu(menu, inflater); } } 
+27
source share

Everything can be done with Fragment - no need to inflate the menu from activity:

 public class UpdateFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.update_menu, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id){ case R.id.navUpdateProfile: showToast("navUpdateProfile"); return true; default: return super.onOptionsItemSelected(item); } } } 
0
source share

All Articles