【发布时间】:2012-02-29 10:11:35
【问题描述】:
我正在构建一个带有ActionBar 和下面两个标签的应用程序。
如果设备/模拟器没有旋转,一切正常。如果旋转,选项卡状态会自动切换到 tab1(正常,因为 onCreate 被调用)但内容不会改变。如果我在新方向中选择一个选项卡,则会调用所选 Fragment 中的 onCreateView() 方法,但视图不会更新(始终保持不变)。有什么建议吗?
代码。
主要活动:
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 布局只包含一个带有硬编码文本的 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>
【问题讨论】:
-
您希望在设备旋转时调用 onCreate() 吗?
-
是和否,在这个例子中是可以的。在最终的应用程序中,也可以,但我认为不是最好的方法。你想使用
android:configChanges="keyboardHidden|orientation"吗?我读到了它,有人说关于内存泄漏和最后的手段。那正确吗?有没有更好的办法?
标签: android layout tabs fragment android-actionbar