Добавить onOptionsItemВыбранный вызов в фрагменте
@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);
}
Я добавил в Fragment, но я не вызвал, если добавить в MainActivity, он работает, но я хочу позвонить в Fragment. Как я могу это сделать?
Ответы
Ответ 1
В Фрагмент вам нужно позвонить setHasOptionsMenu(true)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
...
}
Тогда предположим, что вам нужно обработать элемент menu_item_to_handle_in_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;
}
Для класса Activity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_to_handle_in_fragment:
return false;
}
return false;
}
Ответ 2
Вам нужно добавить setHasOptionMenu(true)
в свой onCreate фрагмента.
Когда вы добавляете эту опцию, жизненный цикл фрагмента вызывает вызовы onCreateOptionMenu() и onOptionItemSelected().
Выполните следующие действия:
-
Добавьте метод setHasOptionsMenu (true) в onCreate() вашего фрагмента.
-
Переопределить onCreateOptionsMenu (меню меню, надувной элемент MenuInflater) и
onOptionsItemSelected (MenuItem item) в вашем фрагменте.
-
Внутри вашего onOptionsItemSelected (элемент MenuItem) Способ активности,
убедитесь, что вы вернете false, когда действие пункта меню будет
реализовано в onOptionsItemSelected (элемент MenuItem) Фрагмент
Метод.