onCreateOptionsMenu 不要在 popbackstack 之后调用

onCreateOptionsMenu do not call after popbackstack

我通过单击菜单将片段 1 替换为片段 2:

 @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.
    if (savedItemsExist()) {
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_call_to_delete_filter) {
            SavedFiltersDeleteFragment newFragment = new SavedFiltersDeleteFragment();
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            transaction.replace(R.id.flContent, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            return true;
        }
    }

    return super.onOptionsItemSelected(item);
}

在片段 2 中,我想 return 到前一个片段:

 getActivity().getSupportFragmentManager().popBackStack();

但是当我出现在片段 1 时,我看到了片段 2 中的菜单。

因此片段 1 中未调用 onCreateOptionsMenu。我在 onStart() 方法中更新片段 1 的 UI,那么如何更新菜单?

  @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        if (savedItemsExist())
            inflater.inflate(R.menu.menu_saved_filters, menu);

    }

我也在Fragment 1的onStart()方法中调用了invalidateOptionsMenu()

 this.setHasOptionsMenu(true); also added in `onCreate()` of the Fragment 1.

所以我通过替换和提交新的 Fragment 而不是 popBackStack

来解决它