Encontramos la contestación a este dilema, o por lo menos eso pensamos. Si continuas con preguntas deja tu comentario, que sin tardanza
Solución:
Llame al supermétodo:
Java:
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
// TODO Add your menu entries here
super.onCreateOptionsMenu(menu, inflater);
Kotlin:
override fun void onCreate(savedInstanceState: Bundle)
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater)
// TODO Add your menu entries here
super.onCreateOptionsMenu(menu, inflater)
Coloque instrucciones de registro en el código para ver si no se está llamando al método o si su código no está modificando el menú.
También asegúrese de que está llamando setHasOptionsMenu(boolean)
en onCreate(Bundle)
para notificar al fragmento que debe participar en el manejo del menú de opciones.
Tuve el mismo problema, pero creo que es mejor resumir e introducir el último paso para que funcione:
-
Añadir setHasOptionsMenu(true) método en su Fragmento
onCreate(Bundle savedInstanceState)
método. -
Anular
onCreateOptionsMenu(Menu menu, MenuInflater inflater)
(si quieres hacer algo diferente en el menú de tu Fragmento) yonOptionsItemSelected(MenuItem item)
métodos en su fragmento. -
dentro de tu
onOptionsItemSelected(MenuItem item)
Método de la actividad, asegúrese de regresar false cuándo se implementaría la acción del elemento de menú enonOptionsItemSelected(MenuItem item)
Método del fragmento.
Un ejemplo:
Actividad
@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;
Fragmento
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;
Si encuentras el onCreateOptionsMenu(Menu menu, MenuInflater inflater)
no se está invocando el método, asegúrese de llamar a lo siguiente desde el Fragmento onCreate(Bundle savedInstanceState)
método:
setHasOptionsMenu(true)
Aquí puedes ver las comentarios y valoraciones de los usuarios
Finalizando este artículo puedes encontrar las interpretaciones de otros sys admins, tú igualmente puedes mostrar el tuyo si lo crees conveniente.