Saltar al contenido

Cómo agregar el menú de opciones a Fragment en Android

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:

  1. Añadir setHasOptionsMenu(true) método en su Fragmento onCreate(Bundle savedInstanceState) método.

  2. Anular onCreateOptionsMenu(Menu menu, MenuInflater inflater) (si quieres hacer algo diferente en el menú de tu Fragmento) y onOptionsItemSelected(MenuItem item) métodos en su fragmento.

  3. 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ú en onOptionsItemSelected(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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *