Android 两个片段由单个操作栏选项卡保存
我想在android操作栏选项卡的单个选项卡中显示2个不同的片段 我会这样做: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
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菜单()。。。