片段处理屏幕方向与操作栏中的选项卡
Posted
技术标签:
【中文标题】片段处理屏幕方向与操作栏中的选项卡【英文标题】:fragment handling screen orientation with tabs in actionbar 【发布时间】:2012-04-06 20:16:08 【问题描述】:有人可以向我解释一下,或者指出一个链接或一个示例,说明在涉及片段时应该如何处理屏幕方向。我目前遇到的问题是我有一个带有三个选项卡的操作栏的应用程序。每个选项卡包含一个片段。因此,当我翻转设备时,只有我设置为使用选择的一个片段
actionbar.setSelectedNavigationItem(1)
显示(为了不混淆,其他选项卡是可见的,但是当我单击它们时没有任何反应,它们无法被选择和显示。它们的内容永远不会显示)。在这些情况下有什么要做的吗?有人可以给我一个建议,我将不胜感激。谢谢你。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,在这里找到了解决方案: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html
问题是先前保存状态的选项卡已经存在片段。您必须停用它们。
这是 TabListener 的构造函数的 code-sn-p:
public TabListener(Activity activity, String tag, Class<T> clz, Bundle args)
mActivity = activity;
mTag = tag;
mClass = clz;
mArgs = args;
// Check to see if we already have a fragment for this tab, probably
// from a previously saved state. If so, deactivate it, because our
// initial state is that a tab isn't shown.
mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
if (mFragment != null && !mFragment.isDetached())
FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
ft.detach(mFragment);
ft.commit();
希望我能帮到你。
【讨论】:
几天前我也想通了。但解决它的方式有所不同。在片段的 onDestroyView 方法中,我为该特定片段调用 remove,因此它不会是来自先前状态的任何片段。但我想你的方式也解决了问题。所以谢谢你! 解释得好,有道理,解决了一个特定的常见问题。非常感谢。 A+ 谢谢!顺便说一句,我在某些地方使用隐藏/显示而不是分离/附加,以避免片段视图重新创建(有时它很长)。然后它也确实有效。以上是关于片段处理屏幕方向与操作栏中的选项卡的主要内容,如果未能解决你的问题,请参考以下文章