Android - очистить историю при навигации между действиями - PullRequest
7 голосов
/ 17 ноября 2009

У меня есть 3 действия, которые постоянно перебирает мой пользователь. Когда пользователь возвращается к главному экрану, мне нужно прекратить предыдущую историю, чтобы пользователь не мог нажать кнопку «Назад» и оказаться на экране №2, что будет хорошим способом сделать что-то подобное? Кстати - я использую 1.6 (уровень API 4)

Повторим - скажем, я не знаю или не предсказываю путь, который ведет меня к первоначальному виду. Но после загрузки я хочу очистить историю, которая привела пользователя к этому представлению. В 2.0 это возможно с перезаписью Activity # onBackPressed, но мне нужно что-то подобное в 1.6

Ответы [ 2 ]

1 голос
/ 13 декабря 2012

Хорошо, я предполагаю, что у вас есть 3 действия, A, B и C. A - это главный экран, и пользователь будет просматривать эти 3 страницы. Но когда пользователь вводит A, событие onBackPresed должно выполняться как выход. Я проясню?

В такой ситуации, когда вы пытаетесь запустить A из B или C, вы можете добавить Intent.FLAG_ACTIVITY_CLEAR_TOP в Intent, тогда стек истории будет очищен, и в вашем стеке будет только A.

Если вы хотите перехватить событие возврата назад, вам не нужно переопределять onBackPressed (). Мы всегда используем onKeyDown до того, как этот метод станет доступен.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

    }
    return super.onKeyDown(keyCode, event);
}
1 голос
/ 13 декабря 2012

Как я знаю. Если вы хотите очистить историю для деятельности, вы можете сделать это двумя способами

(1). В файле manifest.xml

Вы также можете реализовать это из вашего файла AndroidManifest.xml, просто добавив атрибут android: noHistory = "true" в те, которые вам нужны

пример

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.rdc.activity"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="xx" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".PickGalleryImageActivity"
                  android:label="@string/app_name"
                  android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

(2). В коде Java

вы можете добавить этот флаг, когда начнете занятие Intent.FLAG_ACTIVITY_NO_HISTORY

пример

Intent intent = new Intent(this, SomeOtherClass.class);

// do not keep this intent in history
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

startActivity(intent);

А другой, если вы ищете пробуксовку кнопки «Назад», приведенный ниже пример может помочь вам

Если ищете android Уровень API до 1.6 .

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
     //todo here
     return true;
     }
     return super.onKeyDown(keyCode, event);    
}

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

...