how Come aggiungere il menu delle opzioni della barra delle azioni in Android Fragments




set a toolbar android (3)

in AndroidManifest.xml imposta il tema holo in questo modo:

<activity
android:name="your Fragment or activity"
android:label="@string/xxxxxx"
android:theme="@android:style/Theme.Holo" >

Sto cercando di avere un menu opzioni in Android Fragments . ActionBar menu delle opzioni di ActionBar non viene visualizzato nei miei frammenti.

Ecco il mio codice e ho sia onCreateOptionsMenu() che onOptionSelected() . Il mio codice non mostra alcun errore. Ma il menu delle opzioni non viene visualizzato.

package org.reachout;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import org.general.R;

public class ViewMessageFragment extends Fragment {

    /* (non-Javadoc)
     * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        if (container == null) {
            // We have different layouts, and in one of them this
            // fragment's containing frame doesn't exist.  The fragment
            // may still be created from its saved state, but there is
            // no reason to try to create its view hierarchy because it
            // won't be displayed.  Note this is not needed -- we could
            // just run the code below, where we would create and return
            // the view hierarchy; it would just never be used.
            return null;
        }
        return (LinearLayout)inflater.inflate(R.layout.viewmessages_tab_fragment_layout, container, false);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.askexperts_menu, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       // handle item selection
       switch (item.getItemId()) {
          case R.id.action_settings:
             // do s.th.
             return true;
          default:
             return super.onOptionsItemSelected(item);
       }
    }   

}


Sono in ritardo per la risposta, ma penso che questa sia un'altra soluzione che non è menzionata qui, quindi postare.

Passo 1: Crea un xml di menu che vuoi aggiungere come devo aggiungere un'azione filtro sulla mia barra delle azioni, quindi ho creato un xml filter.xml . La linea principale da notare è Android: orderInCategory mostrerà l'icona di azione all'inizio o alla fine ovunque tu voglia mostrare. Un'altra cosa da notare è il valore, se il valore è inferiore a quello che verrà mostrato all'inizio e se il valore è maggiore, verrà visualizzato alla fine.

filter.xml

<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" >


    <item
        android:id="@+id/action_filter"
        android:title="@string/filter"
        android:orderInCategory="10"
        android:icon="@drawable/filter"
        app:showAsAction="ifRoom" />


</menu>

Passo 2: Nel metodo onCreate () del frammento inserisci semplicemente la linea sotto come menzionato, che è responsabile per richiamare il metodo onCreateOptionsMenu (menu, menuInflater inflater) come in un'attività.

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

Passaggio 3: ora aggiungi il metodo onCreateOptionsMenu che verrà sovrascritto come:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.filter, menu);  // Use filter.xml from step 1
    }

Passaggio 4: ora aggiungi il metodo onOptionsItemSelected con il quale puoi implementare la logica qualsiasi cosa tu voglia fare quando selezioni l'icona dell'azione aggiunta da actionBar :

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id == R.id.action_filter){
            //Do whatever you want to do 
            return true;
        }

        return super.onOptionsItemSelected(item);
    }




android-optionsmenu