如何在不丢失数据的情况下回到我的父活动?

时间:2018-04-28 12:50:07

标签: android android-layout android-studio android-fragments android-manifest

我有一个activity A,其中有一个“子活动”,即activity B. 当我创建一个活动时,就像在android中的这种情况一样,我选择了活动B,他的父母应该是活动A.

因此,当我启动我的应用程序时,我在活动B的icon中有appbar,我可以转到活动A.

在我的例子中,用户例如edit-text并操纵活动A中的一些变量并使用Intent调用活动B.

现在,在活动B中,当我点击“返回”图标时,我将回到此案例活动A中的父活动,并且所有操纵数据都“离开”,因为屏幕将重新启动。

但是当我没有点击活动B中的图标而是点击我的手机上的“返回”时,我将回到活动A并且所有被操纵的数据仍将存在。

我的问题是,有没有办法,通过单击活动B中的后退图标返回活动A,而不会重新启动屏幕。因为这个图标是自动添加的,当我说,哪个活动必须是父类。我想,我可以用这个图标返回,但不重新启动屏幕,而是继续,我是“最后”的时间。

我向您展示活动B的清单文件的一部分:

<activity
            android:name=".strassenfuehrer_screen.VideoPlayerHandlungsleitfadenStrassenfuehrerActivity"
            android:label="Straßenführer  >  Handlungsleitfaden  >  VideoPlayer"
            android:parentActivityName=".strassenfuehrer_screen.MitHandlungsleitfadenStrassenfuehrerScreenActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="de.derdoenerdon.ressourcencockpit.strassenfuehrer_screen.MitHandlungsleitfadenStrassenfuehrerScreenActivity" />
        </activity>

您可以在此处看到活动B中的“后退图标”。

enter image description here

为了获得帮助,我非常感谢,我是android的新手并且遇到了困难。

非常感谢

2 个答案:

答案 0 :(得分:3)

在活动A的清单中添加此属性:

  

机器人:launchMode = “singleTask”

这可以解决您的问题。

这可以确保BackStack中只有一个活动A实例。因此,每个任务只创建一次活动A.

希望这有帮助。

了解更多信息https://developer.android.com/guide/components/activities/tasks-and-back-stack

答案 1 :(得分:1)

您可以在onSaveInstanceState()之前覆盖Activity并保存数据。

Activity

在返回该活动时,您可以将保存的数据作为包以@Override public void onSaveInstanceState(Bundle savedInstanceState) { savedInstanceState.putInt("KEY1", Value1); savedInstanceState.putInt("KEY2", Value2); // Always call the superclass so it can save the view hierarchy state super.onSaveInstanceState(savedInstanceState); } 方式获取。

onCreate()