gpt4 book ai didi

java - Android - 操作系统关闭后台应用程序后 fragment 导航问题

转载 作者:行者123 更新时间:2023-11-29 20:27:26 24 4
gpt4 key购买 nike

这是我的 fragment 容器:

    <FrameLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" />

map Activity .java

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragmentContainer, MainMapFragment.newInstance(), "MainMapFragment");
transaction.commit();
}

然后在我的应用程序的其余部分我会这样做:

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, NavigationFragment.newInstance());
transaction.addToBackStack("NavigationFragment");
transaction.commit();

如果我按下后退按钮或我的应用程序进入后台然后返回它,一切都很好。 fragment A -> fragment B:后退 => fragment A:后退 => 应用程序关闭。

但如果应用程序在后台并且 Android 操作系统将其杀死以释放内存,则会出现问题:

fragment A -> fragment B:后退 => fragment A 开启 fragment B(B 在屏幕上始终可见):后退 => fragment A(B 不可见):后退 => 应用程序关闭。

有人有想法吗?

最佳答案

您应该检查 savedInstanceState 是否像这样:

if(savedInstanceState == null) 
{
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragmentContainer, MainMapFragment.newInstance(), "MainMapFragment");
transaction.commit();
}

发生的情况是,当您将应用程序置于后台,然后返回时,您正在重新创建 fragment ,而不是重复使用它们(如果您将应用程序置于后台,这就是您想要做的)。这是因为当您将应用程序置于后台时, fragment 不会被销毁,但当您重新启动应用程序时,它们会被重新创建。

关于java - Android - 操作系统关闭后台应用程序后 fragment 导航问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32357182/

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