Как вернуться к родительской активности без потери данных? - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть activity A с "детской активностью", которая является activity B. Когда я создаю действие, как в этом случае в Android, я выбираю для действия B, что его родителем будет действие A.

Итак, когда я запускаю свое приложение, у меня есть icon в appbar в упражнении B, где я могу перейти к упражнению A.

В моем случае пользователь, например, edit-text, манипулирует некоторыми переменными в действии A и вызывает действие B с помощью Intent.

СЕЙЧАС, в действии 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 голосов
/ 28 апреля 2018

В манифесте для Задания A добавьте этот атрибут:

андроида: launchMode = "singleTask"

Это должно решить вашу проблему.

Это гарантирует, что в BackStack есть только один экземпляр Действия A. Поэтому действие A создается только один раз для каждой задачи.

Надеюсь, это поможет.

для получения дополнительной информации https://developer.android.com/guide/components/activities/tasks-and-back-stack

0 голосов
/ 28 апреля 2018

Вы можете переопределить 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().

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); // Always call the superclass first
    if (savedInstanceState != null) {
        // Restore value of members from saved state
        int val1 = savedInstanceState.getInt("Key1");
        int val2 = savedInstanceState.getInt("Key2");
    } else {
        // This is the case when you are openning this Activity for the for the first time
    }
}
...