tres studio puntos icono boton barra bar agregar android android-fragments android-actionbar android-optionsmenu

puntos - menu bar en android studio



Cómo agregar el menú de opciones de la barra de acciones en los Fragmentos de Android (3)

Estoy tratando de tener un menú de opciones en los Fragmentos de Android . ActionBar menú de opciones de ActionBar no se muestra en mis Fragmentos.

Aquí está mi código y tengo las onCreateOptionsMenu() y onOptionSelected() . Mi código no muestra ningún error. Pero el menú de opciones no se muestra.

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); } } }


Llegué tarde para la respuesta, pero creo que esta es otra solución que no se menciona aquí, así que publique.

Paso 1: crea un xml de menú que quieras agregar como tengo que agregar una acción de filtro en mi barra de acción, así que he creado un xml filter.xml . La línea principal para observar es android: orderInCategory esto mostrará el ícono de acción al principio o al final donde quiera que se muestre. Una cosa más para anotar es el valor, si el valor es menor, se mostrará al principio y si el valor es mayor, se mostrará al final.

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>

Paso 2: En el método onCreate () de fragmento, simplemente coloque la línea siguiente como se mencionó, que es responsable de volver a llamar al método CreateOptionsMenu (menú de menú, inflador de menúinflater) como en una actividad .

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

Paso 3: Ahora agregue el método en CrearteOpcionesMenú que será anulado como:

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

Paso 4: Ahora agregue el método OnOptionsItemSelected mediante el cual puede implementar la lógica lo que quiera hacer cuando selecciona el icono de acción adicional de 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); }


en AndroidManifest.xml, establezca el tema holo así:

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