Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 方向更改时的操作栏选项卡碎片_Android_Android Fragments_Android Actionbar - Fatal编程技术网

Android 方向更改时的操作栏选项卡碎片

Android 方向更改时的操作栏选项卡碎片,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,有没有办法完全删除与操作栏选项卡关联的片段?我的应用程序在纵向视图中有两个选项卡。在landscap视图中,我加载一个完全不同的片段视图。当我从纵向视图转到陆地时,最后一个选项卡中选定的碎片覆盖在landscap中的碎片上 有没有办法确保在方向发生变化时,纵向视图中的选项卡碎片永远不会重新创建 编辑:我使用的是动态片段。所有片段都将添加到同一framlayout。当您更改方向时,您将重新创建活动,从而创建所有片段。根据主要活动的onCreate方法中的方向来处理这种情况对您来说应该是非常简单的

有没有办法完全删除与操作栏选项卡关联的片段?我的应用程序在纵向视图中有两个选项卡。在landscap视图中,我加载一个完全不同的片段视图。当我从纵向视图转到陆地时,最后一个选项卡中选定的碎片覆盖在landscap中的碎片上

有没有办法确保在方向发生变化时,纵向视图中的选项卡碎片永远不会重新创建


编辑:我使用的是动态片段。所有片段都将添加到同一framlayout。

当您更改方向时,您将重新创建活动,从而创建所有片段。根据主要活动的onCreate方法中的方向来处理这种情况对您来说应该是非常简单的

要获得方向,请使用:

getResources().getConfiguration().orientation

通过调用父片段管理器在重新创建活动时逐个标记定位片段,解决了此问题:

 Fragment frag = super.getSupportFragmentManager().findFragmentByTag("tag");
if (frag != null)
fragTransaction.remove(frag);

无论方向如何,操作系统都将重新创建最后一个片段。因此,如果您从纵向模式转到横向模式,则当“活动”在横向模式下启动时,纵向中的片段将重新创建。@user1935235,这取决于您是否传递了savedInstanceState以及您是如何创建片段的。这是一个非常通用的语句。你能进一步解释你的观点吗?