J'ai eu le même problème, mais je pense que c'est mieux de résumer et de présenter la dernière étape pour le faire fonctionner:
Ajouter setHasOptionsMenu(vrai) méthode dans votre Fragment de la onCreate(Bundle savedInstanceState)
méthode.
Remplacer onCreateOptionsMenu(Menu menu)
(si vous voulez faire quelque chose de différent dans votre Fragment du menu) et onOptionsItemSelected(MenuItem item)
méthodes dans votre Fragment.
À l'intérieur de votre onOptionsItemSelected(MenuItem item)
de l'Activité de méthode, assurez-vous de retourner la valeur false lorsque l'élément de menu d'action serait mis en œuvre en onOptionsItemSelected(MenuItem item)
Fragment de la méthode.
Un exemple:
L'activité
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.activity_menu_item:
// Do Activity menu item stuff here
return true;
case R.id.fragment_menu_item:
// Not implemented here
return false;
default:
break;
}
return false;
}
Fragment
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
....
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.activity_menu_item:
// Not implemented here
return false;
case R.id.fragment_menu_item:
// Do Fragment menu item stuff here
return true;
default:
break;
}
return false;
}
J'espère que ce sera utile.
Des acclamations.