Android OnOptionItemSelected在片段回退中不起作用

Android OnOptionItemSelected在片段回退中不起作用,android,android-fragments,android-optionsmenu,Android,Android Fragments,Android Optionsmenu,当在后堆栈中添加片段时,选项菜单单击不起作用。第一个片段选项项单击成功 片段回退代码 public void setFragment(Fragment fragment, int title_res) { String backStateName = fragment.getClass().getName(); FragmentManager manager = getSupportFragmentManager(); FragmentTransaction fragme

当在后堆栈中添加片段时,选项菜单单击不起作用。第一个片段选项项单击成功

片段回退代码

public void setFragment(Fragment fragment, int title_res) {
    String backStateName = fragment.getClass().getName();
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = manager.beginTransaction();
    if (editable_mode) {
        boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
        Log.e("fragmentPopped", fragmentPopped + "");
        if (fragmentPopped) {
            fragmentTransaction.remove(fragment);
        }
        fragmentTransaction.add(R.id.view_container, fragment);
        fragmentTransaction.addToBackStack(backStateName);
        fragmentTransaction.commit();
    } else {
        boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
        Log.e("fragmentPopped", fragmentPopped + "");
        if (!fragmentPopped) { //fragment not in back stack, create it.
            fragmentTransaction.add(R.id.view_container, fragment);
            fragmentTransaction.commit();
        }
    }

    getSupportActionBar().setTitle(title_res);
}
在片段onCreate()中添加以下行

  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}
更新:

如果从基本活动添加菜单,则将此代码添加到片段onResume()中,并从onCreate()中删除setHasOptions菜单(true)


您是在片段中还是在基本活动类中设置选项菜单?在基本活动中
    @Override
    public void onResume() {
        super.onResume();
        ActivityCompat.invalidateOptionsMenu(getActivity());
    }