我遇到onOptionsItemSelected事件的问题。 我的应用程序包括Activity,main片段,多个功能片段。
Activity的FragmentManager只包含一个片段(MainFragment)。 MainFragment的ChildFragmentManager最多包含5个片段。 所有片段都通过以下方法添加:
public void addFragment(Fragment fragment) {
FragmentManager fm = getChildFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.frame, fragment);
ft.addToBackStack(fragment.getClass().getSimpleName());
ft.commit();
}
所有子片段都有自己的菜单。每个片段都有相同的超类
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
setHasOptionsMenu(true);
...
}
它是自己的
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.some_menu, menu);
...
}
和
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
}
所有菜单都正确充气,但总是为backstack中的第一个片段调用onOptionsItemSelected(MenuItem item):
让我说我有:
菜单从SelectionFragment中膨胀,但当我按下菜单按钮时,它调用DetailsFragment.onOptionsItemSelected ...
MainActivity没有菜单(没有提到的方法)。
我该如何解决这个问题?
此致 的Jakub