Как мне использовать Back Stack, чтобы разрешить использование кнопки «Назад»? - PullRequest
0 голосов
/ 28 февраля 2012

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

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

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

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

Мое приложение правильно выполняет пункты 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 из стека истории.

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

1 Ответ

0 голосов
/ 29 февраля 2012

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

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

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

...