@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);
}
J'ai ajouté dans Fragment, mais je n'ai pas appelé, si j'ajoute dans MainActivity, cela fonctionne mais je veux appeler dans Fragment. Comment puis-je faire ceci ?
Dans Fragment vous devez appeler setHasOptionsMenu(true)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
...
}
Supposons ensuite que vous devez gérer menu_item_to_handle_in_fragment
item click
Pour la classe de fragment
@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;
}
Pour la classe d'activité
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_to_handle_in_fragment:
return false;
}
return false;
}
Vous devez ajouter setHasOptionMenu(true)
dans votre onCreate of fragment.
Lorsque vous ajoutez cette option, le cycle de vie du fragment appelle onCreateOptionMenu () et onOptionItemSelected ().
Suivez ces étapes:
Ajoutez la méthode setHasOptionsMenu (true) dans onCreate () de votre fragment.
Remplacer les méthodes onCreateOptionsMenu (menu Menu, MenuInflater inflater) et les méthodes OnOptionsItemSelected (élément MenuItem) dans votre fragment.
Dans la méthode de votre activité onOptionsItemSelected (élément MenuItem), Assurez-vous de renvoyer false lorsque l'action de l'élément de menu serait Implémentée dans la méthode de Fragment
Étapes pour créer un menu d'options dans un fragment
1.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_home, menu);
super.onCreateOptionsMenu(menu, inflater);
}
2
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case Android.R.id.home:
//call function as per your requirement
return true;
default:
return false;
}
}