Android - histoire claire lors de la navigation entre les activités
-
20-09-2019 - |
Question
J'ai 3 activités que mon utilisateur est continuellement mise en boucle à travers. Lorsque l'utilisateur est de retour à l'écran principal, je dois mettre fin à l'histoire précédente si l'utilisateur ne peut pas frapper le bouton retour et finir à l'écran # 2, ce serait une bonne façon de faire quelque chose comme ça? BTW - J'utilise 1.6 (niveau de l'API 4)
Je le répète - dire que je ne sais pas ou prédis le chemin qui me mène à la vue originale. Mais une fois que je charge, je veux effacer l'historique qui a conduit l'utilisateur à ce point de vue. Dans 2.0, il est possible avec l'activité # écrasement onBackPressed mais je besoin de quelque chose comme ça dans 1,6
La solution
Ok, je suppose que vous avez 3 activités, A, B et C. A est l'écran principal et l'utilisateur en boucle à travers ces 3 pages. Mais lorsque l'utilisateur A saisir, l'événement onBackPresed doit être effectué en sortie. Est-ce que je fais clairement?
Dans une telle situation, lorsque vous essayez de démarrer A de B ou C, vous pouvez ajouter Intent.FLAG_ACTIVITY_CLEAR_TOP à l'intention, la pile de l'histoire sera effacé et il n'y aura que A dans votre pile.
Si vous voulez intercepter l'événement clé en arrière, vous n'avez pas besoin de passer outre onBackPressed (). Nous utilisons toujours onKeyDown avant que cette méthode est disponible.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
}
return super.onKeyDown(keyCode, event);
}
Autres conseils
Comme je sais Si vous voulez effacer l'historique de l'activité que vous pouvez faire de deux façons
(1). Dans le fichier manifest.xml
Vous pouvez également mettre en œuvre ce à partir de votre fichier AndroidManifest.xml, ajoutant simplement android: Nohistory = "true" attribut dans ceux que vous voulez
exemple
<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). Dans le code Java
vous pouvez ajouter cette option lorsque vous commencez une activité Intent.FLAG_ACTIVITY_NO_HISTORY
exemple
Intent intent = new Intent(this, SomeOtherClass.class);
// do not keep this intent in history
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
Et l'autre est si vous cherchez Bouton Retour empalement exemple ci-dessous peut vous aider
Si vous cherchez niveau api Android jusqu'à 1.6 .
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//todo here
return true;
}
return super.onKeyDown(keyCode, event);
}
Je espère que ça vous aidera !!