0

我想在 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().invalidateOptionsMenu( ); 但没有成功....任何人都可以帮助我吗?

4

2 回答 2

0

不要在 XML 文件中添加片段。只需创建容器并以编程方式放置片段。

于 2012-11-01T21:12:01.187 回答
0

如果您只是尝试替换片段,请调用ft.replace

还有,为什么要这么做?

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

您正在添加 Frag2,然后在 ft.add 中将其标记为 Frag1

于 2012-06-21T02:09:02.813 回答