【问题标题】:fragment handling screen orientation with tabs in actionbar片段处理屏幕方向与操作栏中的选项卡
【发布时间】:2012-04-06 20:16:08
【问题描述】:

有人可以向我解释一下,或者指出一个链接或一个示例,说明在涉及片段时应该如何处理屏幕方向。我目前遇到的问题是我有一个带有三个选项卡的操作栏的应用程序。每个选项卡包含一个片段。因此,当我翻转设备时,只有我设置为使用选择的一个片段

actionbar.setSelectedNavigationItem(1) 

显示(为了不混淆,其他选项卡是可见的,但是当我单击它们时没有任何反应,它们无法被选择和显示。它们的内容永远不会显示)。在这些情况下有什么要做的吗?有人可以给我一个建议,我将不胜感激。谢谢你。

【问题讨论】:

    标签: android tabs fragment android-actionbar screen-orientation


    【解决方案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+
    • 谢谢!顺便说一句,我在某些地方使用隐藏/显示而不是分离/附加,以避免片段视图重新创建(有时它很长)。然后它也确实有效。
    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2012-06-26
    • 2015-05-04
    相关资源
    最近更新 更多