gpt4 book ai didi

Android 在屏幕旋转时复制 fragment

转载 作者:太空狗 更新时间:2023-10-29 16:37:46 26 4
gpt4 key购买 nike

在我当前的应用程序中,我使用了两个 fragment 。它们的位置是这样的:

纵向 View

|F1|
|--|
|F2|

在横向 View 中:

|F2|F1|

地点:F1是 map fragment F2是列表 fragment

布局具有相同的名称并放置在两个文件夹中:layoutlayout-land

我在 Activity onCreate() 方法中设置我的 fragment :

private void displayFragment(int position) {
Fragment fragment = null;
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
switch (position) {
case MAIN_FRAGMNET:
fragment = fragmentManager.findFragmentByTag(String
.valueOf(position));
if (fragment == null) {
fragment = new MainListFragment();
}
break;
case MAP_FRAGMENT:
fragment = fragmentManager.findFragmentByTag(String
.valueOf(position));
if (fragment == null) {
fragment = new EMapFragment();
}
break;
default:
break;
}

if (fragment != null) {
if (fragment instanceof EMapFragment) {
fragmentTransaction.add(R.id.mapContainer, fragment);
} else {
setSelection(position);
fragmentTransaction.add(R.id.listContainer, fragment);
}
fragmentTransaction.commit();
}
}

并在 onCreate()

    displayFragment(MAP_FRAGMENT);
displayFragment(MAIN_FRAGMNET);

根据有关旋转 Activity 生命周期的文档,重新创建了。所以一切都应该完成,因为它会作为一个新的应用程序打开。然而,事实并非如此。

每次我旋转设备时, fragment 都会重复 - ActionBar 菜单中的选项会重复,第二个列表正在尝试加载 - 这仅显示初始布局消息,但加载器不是第二次开始了。

第一个(初始)列表仍然可见。

有人可以告诉我我在这里做错了什么吗?我希望 fragment 始终是单一的,因此当真正旋转时,一切都会重建。

最佳答案

onCreate()回调中调用displayFragment()方法,只有当传入的Bundle为null时,表示Activity 未被重新创建(如果 Activity 被重新创建,则系统将提供 fragment )。然后在您的两个布局中,只需更改两个 fragment 容器的位置以匹配所需的设计。具有这两种布局的系统将负责正确地重新创建这两个 fragment 并将它们放入容器中。

关于Android 在屏幕旋转时复制 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com