gpt4 book ai didi

android - 应用程序进入后台后如何导航回特定 Activity ?

转载 作者:行者123 更新时间:2023-12-05 07:50:58 25 4
gpt4 key购买 nike

我遇到了一个问题,当我暂停我的应用程序几分钟(让它留在后台)时,当我将它带回前台时,我希望它始终返回到特定 Activity 。现在,如果我在一个名为 Fragment A 的特定 fragment 上,并且我想导航到我的 HomeActivity,我想调用一个 Intent来自 onResume 中的 Fragment A 会起作用,因为每当我想到每当我从后台恢复我的 Activity 几分钟时,我的 Intent 就会触发并将我带回去到 HomeActivity。这是我的尝试:

fragment A.java:

    @Override
public void onResume(){
super.onResume();
Intent intent = new Intent(getActivity(), HomeActivity.class);
if(intent != null) {
startActivity(intent);
}
}

现在,好像当我加载我的应用程序时,我的 fragment 在从后台出来时被调用,而不是我希望在我的应用程序从后台出来后调用它的“主页”屏幕到前台。顺便说一下,我的 Android Manifest 中的 HomeActivity 没有以下内容:

        <intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

因为这是应用首次启动时我的登录 Activity 。

但是,这似乎使我的应用出现白屏,我的 UI 均未显示,并最终使我的应用崩溃。在应用程序在后台(暂停,如果你愿意)几分钟后进入前台后,有什么方法可以让我始终导航回到我所在的任何 fragment 中的 Activity ?任何帮助,将不胜感激。谢谢!

最佳答案

当应用程序进入后台时,调用 Activity/fragment savedStateInstance 并保存 outState 包。

当应用程序恢复时, Activity/fragment onCreate(Bundle savedInstanceState) 被调用。在这种情况下,savedInstanceState 不为空。如果 Activity 是使用 intent 启动的,则 savedInstanceState 将为空。这就是为什么即使应用程序在后台被销毁,当应用程序恢复时,edittext 将包含先前输入的文本的原因。 (activity/fragment 在被销毁之前保存了它的 ui 状态,这样当用户返回它时它可以恢复 ui)。

在你的 fragment 中,

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
Intent intent = new Intent(getActivity(), HomeActivity.class);
startActivity(intent);
}
}

应在后台销毁应用程序时启动 HomeActivity。

更新您可以在您的 Activity 中应用相同的逻辑,而不是在每个 fragment 中重复它。即

 @Override
protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
}
}

注意:您必须知道,在方向更改期间创建 Activity 时,savedInstanceState 不是 null。因此,此解决方案仅在方向锁定时才有效。

希望对你有帮助..

关于android - 应用程序进入后台后如何导航回特定 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621352/

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