我正在构建一个带有ActionBar
和两个标签的应用。
如果设备/模拟器没有旋转,一切正常。如果旋转,选项卡状态会自动切换到tab1(正常,因为onCreate
被调用)但内容不会更改。如果我在新方向中选择了一个标签,则会调用所选onCreateView()
中的Fragment
方法,但视图不会更新(始终保持不变)。任何提示?
代码。
主要活动:
ActionBar actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab ATab = actionbar.newTab().setText(R.string.player);
ActionBar.Tab BTab = actionbar.newTab().setText(R.string.stations);
Fragment AFragment = new AFragment();
Fragment BFragment = new BFragment();
PlayerTab.setTabListener(new MyTabsListener(AFragment));
StationsTab.setTabListener(new MyTabsListener(BFragment));
actionbar.addTab(ATab);
actionbar.addTab(BTab);
使用相同的标签显示简单的文本视图。 textview简单说明选择了哪个选项卡。
片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.a, container, false);
}
上面提到的Fragment布局只包含带有硬编码Text的TextView。 (仅用于测试目的)
主要布局如下所示。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</LinearLayout>
</LinearLayout>
答案 0 :(得分:19)
解决。我每次都重新创建片段,不再这样做了解决它。
我的TabListener和onTabSelected(Tab tab, FragmentTransaction ft)
,ft.add()
更改为ft.replace()