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