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

标签 android android-fragments android-intent

我遇到了一个问题,当我暂停我的应用程序几分钟(让它留在后台)时,当我将它带回前台时,我希望它始终返回到特定 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/

相关文章:

android - 导航 DrawerLayout 按钮永远不会更改为后退按钮,也不会导航

java - 将 progressBar 可见性设置为消失时应用程序崩溃

Android fragment 选项卡,带有适用于所有 api 的 viewpager

android - 是否可以以具有多个图钉的 Intent 打开谷歌地图

android - 类似于 android 应用程序中的下拉菜单?

android - 将值(value)从一个 Activity 传递到另一个 Activity 的另一种方法

Android startActivity - 发生了什么

android - 如何通过另一个 Activity 中的 Intent 打开 fragment 类?

android - 即使 LatLng 不在定义的边界内,LatLngBounds.contains 也会返回 true

java - 返回的位置在 TomTom Android SDK 中为空