Как мне использовать Back Stack, чтобы разрешить использование кнопки "Назад"?
Итак, у меня есть это приложение с 4 различными видами деятельности:
- A является основным действием с тремя кнопками для запуска B, C и D (я думаю, что люди используют для обозначения их как вспомогательные действия).
- У каждого вида деятельности есть свой макет, но я считаю, что это здесь не актуально.
То, что я хочу сделать, это стандартное поведение для большинства приложений. То есть:
- Я начинаю с запуска приложения и вижу активность А.
- Затем я нажимаю кнопку, например, C, и показывается активность C.
- Затем я нажимаю кнопку "Назад", и снова отображается активность А.
Мое приложение выполняет пункты 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.