为错误的片段调用onOptionsItemSelected(来自backstack的不同片段)

时间:2016-05-25 14:21:13

标签: android android-fragments android-menu android-inflate fragmentmanager

我遇到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):

让我说我有:

  1. MainFragment(getChildFragmentManager)
  2. DetailsFragment
  3. EditFragment
  4. SelectionFragment
  5. 菜单从SelectionFragment中膨胀,但当我按下菜单按钮时,它调用DetailsFragment.onOptionsItemSelected ...

    MainActivity没有菜单(没有提到的方法)。

    我该如何解决这个问题?

    此致 的Jakub

0 个答案:

没有答案