0

У меня есть onOptionsItemSelected (элемент MenuItem) в моем фрагменте. Теперь я вынужден использовать библиотеку Android-ActionItemBadge (https://github.com/mikepenz/Android-ActionItemBadge), чтобы добавить счетчик уведомлений ActionBar. , поэтому я добавил фрагмент кода в свой фрагмент.Значок ActionBar возвращает optionitemselected click to Activity вместо моего фрагмента

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
      //Inflating the Menu 
       inflater.inflate(R.menu.refresh_menu, menu); 

     //inflating Notification Icon 
     if (badgeCount > 0) { 
      ActionItemBadge.update(getActivity(), menu.findItem(R.id.badge), 
        FontAwesome.Icon.faw_android, ActionItemBadge.BadgeStyle.DARKGREY, badgeCount); 
     } else { 
      ActionItemBadge.hide(menu.findItem(R.id.badge)); 
     } 
} 

Но этот Optionsitemselected возвращает значение для моей деятельности, но не для моего фрагмента. Есть идеи? Я хочу обработать этот параметр, выбранный в моем фрагменте.

ответ

2

В вашем фрагменте вам необходимо позвонить:

setHasOptionsMenu(true); 

Edit:

Поскольку пользовательские ActionBar элемент не обеспечивает вызовы вашего фрагмента вы можете просто сделать это вручную:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_search: // Your item id 
      Fragment f = getFragmentManager().findFragmentById(R.id.fragment_container); 
      f.onOptionsItemSelected(item); 
      break; 
     default: 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

Я включил и другие варианты работают нормально. Только этот ActionItemBadge обрабатывает clickevent в MainActivity. – Vrangle

+0

@ Vrangle Я вижу. Вы могли бы просто сделать это вручную, как в моем обновленном ответе. – Simas

+0

Прекрасно работает. Немного Более ясно, чтобы другие могли понять. Я реализовал этот код в своей основной деятельности и передал вызов моим фрагментам, а мои фрагменты имеют собственный метод onOptionsItemSelected (MenuItem item) для его обработки. Молодцы user3249477 – Vrangle