Android 两个片段由单个操作栏选项卡保存

Android 两个片段由单个操作栏选项卡保存,android,fragment,Android,Fragment,我想在android操作栏选项卡的单个选项卡中显示2个不同的片段 我会这样做: public class Frag1 extends Fragment { @Override public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.frag1_men

我想在android操作栏选项卡的单个选项卡中显示2个不同的片段

我会这样做:

public class Frag1 extends Fragment { 

   @Override
   public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {

    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.frag1_menu, menu);
    }

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case R.id.item1:
               break;
            case R.id.item_GoToFrag2:
                    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
        ft.remove(Frag1.this); 

                    Fragment mFragment = Fragment.instantiate(getActivity(), Frag2.class.getName(), null);             
        ft.add(android.R.id.content, mFragment, Frag2.class.getName() ); 
        ft.commit();
               break;
            } 
    return true;
}
}
Frag2的代码完全相同,唯一的区别在于onOptionsItemSelected中的以下情况:

            case R.id.item_GoToFrag1:
                    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
        ft.remove(Frag2.this); 

                    Fragment mFragment = Fragment.instantiate(getActivity(), Frag2.class.getName(), null);             
        ft.add(android.R.id.content, mFragment, Frag1.class.getName() ); 
        ft.commit();
               break;

一切似乎都正常,问题是当我切换到其他选项卡时,与Frag2相关的图标对所有其他选项卡仍然可见,我真的不明白为什么,我还调用getActivity().InvalidateOptions菜单();但是没有成功。。。。有人能帮我吗?

如果您只是想替换一个片段,请致电

还有,为什么要这样做

Fragment mFragment = Fragment.instantiate(getActivity(), Frag2.class.getName(), null);             
        ft.add(android.R.id.content, mFragment, Frag1.class.getName() ); 

您正在添加Frag2,然后在ft.add中将其标记为Frag1。只需创建容器并以编程方式放置片段。

只是一个旁注。您确定要使用片段而不是创建自定义视图吗?即使我修复了标记错误,问题仍然存在。。。关键是,即使替换了片段,操作栏上的相关图标也不会刷新,即使我调用InvalidateOptions菜单()。。。