带有旋转片段的ActionBar选项卡
问题描述:
我正在用ActionBar
和以下两个选项卡构建应用程序。 一切工作正常,如果设备/模拟器不旋转。如果旋转,标签状态自动切换到tab1(正常,因为onCreate
被调用),但内容不会被更改。如果我在新方向中选择一个选项卡,则将调用所选Fragment
中的onCreateView()
方法,但视图不会更新(始终保持相同)。有小费吗?带有旋转片段的ActionBar选项卡
代码。
主要活动:
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相同标签。 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);
}
片段布局,如上所述,仅包含具有硬编码的文本一个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>
答
已解决。我已经重新创建了片段,不再那么解决它。
改变了我的TabListener和onTabSelected(Tab tab, FragmentTransaction ft)
,ft.add()
到ft.replace()
+2
这个错误也在官方Android文档中: http://developer.android.com/guide/topics/ui/actionbar.html#Tabs 也许有人可以在那里修复它。 – StefanMK 2014-09-10 12:06:52
你想的onCreate()当设备被转动而叫什么名字? – nhaarman 2012-02-08 00:01:26
是和否,在这个例子中是可以的。在最终的应用程序,也好,但我认为不是最好的方式。你想使用'android:configChanges =“keyboardHidden | orientation”'?我读过它,任何人都说过关于内存泄漏和最后的手段。是对的吗?有没有更好的办法? – Leandros 2012-02-08 00:06:14