首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >碎片布局定向管理

碎片布局定向管理
EN

Stack Overflow用户
提问于 2016-05-16 05:39:21
回答 3查看 61关注 0票数 2

我有小问题,碎片方向的改变,我有一个DrawerActivity开始加载ProfileFragment在里面,在左导航栏审查按钮,如果单击按钮加载ReviewFrament在同一个容器。现在,在ReviewFragement中,如果改变方向,它显示的是ProfileFrament(后台),它刷新了整个页面。

如何避免应用程序的不当行为?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-17 07:28:41

最后,在加载视图的基础上使用放置标志来检查碎片的状态。

尝试使用清单中的配置更改,但它不会更改布局视图(如果我们想按方向更改设计)。

票数 1
EN

Stack Overflow用户

发布于 2016-05-16 05:47:20

只需将这一行添加到DrawerActivity中的manifest文件中即可。

代码语言:javascript
复制
android:configChanges="orientation|screenSize"

所以你的活动标签会像这样。

代码语言:javascript
复制
<activity
    android:name="packagename.DrawerActivity"
    android:configChanges="orientation|screenSize"
    android:label="@string/app_name" >
</activity>

编码愉快。

票数 0
EN

Stack Overflow用户

发布于 2016-05-16 06:07:16

它的发生是因为你的活动是在旋转后重建的,所以碎片会被破坏。

我建议处理这种情况的最佳方法是使用活动作为父级进行分段,就像容器一样将任何布局放置在活动中,并使用片段执行所有其他操作。

例如,在您的情况下,主活动应该只包含这样的容器

代码语言:javascript
复制
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

然后使用ProfileFragment,它将从您的活动的onCreate启动,如下所示

代码语言:javascript
复制
// this will prevent the fragments from recreating on rotate
if (savedInstanceState == null){
        setSplashFragment();
        } else {
            //Do Nothing
        }

在你的名单里

代码语言:javascript
复制
<activity
    android:name=".ParentActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

并使用接口通知活动,在单击按钮时启动ReviewFragement等等。

这听起来可能很复杂,您可能正在寻找一个快速的解决方案,但这是避免未来冲突的最佳方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37247355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档