studio sirven que pasar para otro navegar los fragments fragmento entre destruir cambio cambiar android android-fragments layout-inflater oncreateoptionsmenu

android - sirven - onCreateOptionsMenu dentro de los fragmentos



pasar de un fragment a otro android studio (5)

Intenté las respuestas de @Alexander Farber y @Sino Raj. Ambas respuestas son agradables, pero no pude usar el onCreateOptionsMenu dentro de mi fragmento, hasta que descubrí lo que faltaba:

Agregue setSupportActionBar (barra de herramientas) en mi actividad, de esta manera:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.id.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); }

Espero que esta respuesta pueda ser útil para alguien con el mismo problema.

He colocado setHasOptionsMenu(true) dentro de onCreateView , pero todavía no puedo invocar onCreateOptionsMenu dentro de los fragmentos.

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); return inflater.inflate(R.layout.facesheet, container, false); }

A continuación está mi código onCreateOptionsMenu .

@Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { getSupportMenuInflater().inflate(R.menu.layout, menu); return (super.onCreateOptionsMenu(menu)); }

El mensaje de error que recibo:

El método onCreateOptionsMenu(Menu) de tipo Fragment debe anular o implementar un método de supertipo.


Llamada

setSupportActionBar(toolbar)

dentro

onViewCreated(...)

de Fragmento

@Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); ((MainActivity)getActivity()).setSupportActionBar(toolbar); setHasOptionsMenu(true); }


Ya tiene el archivo autogenerado res / menu / menu.xml que define action_settings .

En su MainActivity.java, tenga los siguientes métodos:

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_settings: // do stuff, like showing settings fragment return true; } return super.onOptionsItemSelected(item); // important line }

En el método onCreateView() de tu llamada de Fragmento:

setHasOptionsMenu(true);

y también agrega estos 2 métodos:

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.fragment_menu, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_1: // do stuff return true; case R.id.action_2: // do more stuff return true; } return false; }

Finalmente, agregue el nuevo archivo res / menu / fragment_menu.xml definiendo action_1 y action_2 .

De esta forma, cuando su aplicación muestre el Fragmento, su menú contendrá 3 entradas:

  • action_1 desde res / menu / fragment_menu.xml
  • action_2 desde res / menu / fragment_menu.xml
  • action_settings desde res / menu / menu.xml

prueba esto,

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_sample, menu); super.onCreateOptionsMenu(menu,inflater); }

Y en onCreate agrega esta línea para que las opciones aparezcan en tu Toolbar

setHasOptionsMenu(true);


@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_add_customer, container, false); setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_sample, menu); super.onCreateOptionsMenu(menu,inflater); }