Añadir onOptionsItemSelected llamando a Fragment
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_filter) { FragmentManager fm = getSupportFragmentManager(); if (userType.equals("İş Arayan")) filterDialogTitle = "İş İlanları Filtre"; else if (userType.equals("Hizmet Arayan")) filterDialogTitle = "Hizmet İlanları Filtre"; FilterDialogFragment editNameDialogFragment = FilterDialogFragment.newInstance(filterDialogTitle); editNameDialogFragment.show(fm, "fragment_edit_name"); return true; } return super.onOptionsItemSelected(item); }
Añadí en Fragment, pero no me llamó, si agrego en MainActivity, funciona, pero quiero llamar en Fragment. Cómo puedo hacer esto ?
En Fragmento tienes que llamar a setHasOptionsMenu(true)
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); ... }
Entonces supongamos que usted tiene que manejar menu_item_to_handle_in_fragment
item click
Para la clase Fragmento
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_to_handle_in_fragment: // Do onlick on menu action here return true; } return false; }
Para la clase de actividad
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_to_handle_in_fragment: return false; } return false; }
setHasOptionMenu(true)
agregar setHasOptionMenu(true)
en su onCreate de fragmento.
Cuando se agrega esta opción, el ciclo de vida de los fragmentos llamará onCreateOptionMenu () y onOptionItemSelected ().
Sigue estos pasos:
-
Agregue el método setHasOptionsMenu (true) en onCreate () de su Fragmento.
-
Anule los métodos onCreateOptionsMenu (Menú de menú, MenúInflater inflado) y onOptionsItemSelected (Elemento MenuItem) en su Fragmento.
-
Dentro de su método onOptionsItemSelected (item MenuItem) Activity, asegúrese de devolver false cuando la acción de elemento de menú se implementaría en el método onOptionsItemSelected (item MenuItem) Fragment.