Как мне использовать Back Stack, чтобы разрешить использование кнопки "Назад"?

Итак, у меня есть это приложение с 4 различными видами деятельности:

  • A является основным действием с тремя кнопками для запуска B, C и D (я думаю, что люди используют для обозначения их как вспомогательные действия).
  • У каждого вида деятельности есть свой макет, но я считаю, что это здесь не актуально.

То, что я хочу сделать, это стандартное поведение для большинства приложений. То есть:

  1. Я начинаю с запуска приложения и вижу активность А.
  2. Затем я нажимаю кнопку, например, C, и показывается активность C.
  3. Затем я нажимаю кнопку "Назад", и снова отображается активность А.

Мое приложение выполняет пункты 1 и 2 правильно, но на 3 приложение исчезает.

У метода кнопок onClick есть что-то вроде этого:

startActivity(new Intent(this,C.class));

Ни одно из действий не переопределяет метод onBackPressed.

Вот (часть) мой файл манифеста:

<activity android:name=".A" android:label="A" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

<activity android:name=".B" android:label="B" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/>
<activity android:name=".C" android:label="C" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/>
<activity android:name=".D" android:label="D" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/>

Из отладочной работы, которую я сделал, я знаю, что A.onDestroy() вызывается после вызова метода onClick кнопки. Основываясь на этой информации, я думаю, что, и, конечно, я могу ошибаться, действие A по какой-то причине удаляется из стека истории.

Теперь я знаю, что проблема такого рода уже была рассмотрена здесь в stackru, но я перепробовал все предложения, которые смог найти, но ни один из них не сработал. Я хотел объяснить мой собственный случай.

1 ответ

Конечно, я должен делать что-то не так.

Я переопределял метод onWindowFocusChanged и уничтожал там активность, поэтому, конечно, он удалялся из стека.

Прошу прощения за трату вашего времени @stefan и @colegu.

Другие вопросы по тегам