Ich habe 4 Aktivitäten A, B, C, D, E mit jeweils als android:launchMode="singleInstance"
deklariert und A ist parentActivity
von B, und B ist übergeordnete Aktivität von C, in manifest.FLAG_ACTIVITY_CLEAR_TOP funktioniert nicht wie erwartet
Nun navigiert Anwender wie folgt E: A> B> C> D> E. Und ich habe eine Schaltfläche in E mit den folgenden OnClickListener
Intent intent = new Intent(E.this, C.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Was ich brauche? (auch nach der Dokumentation, wenn ich es richtig verstanden, das geschehen soll)
- Aktivitäten D und E sollten aus dem Stapel gelöscht werden
- Aktivität C sollte die Absicht Empfang wieder aufgenommen wird (wie SingleInstance gesetzt wird, wird nicht neu erstellt)
Ich möchte diesen Stapel: C | B | Ein
Was ist los?
- Aktivität C wird fortgesetzt Aufnahme der Absicht
- Aktivitäten D und E sind NICHT vom Stapel gelöscht. Ich kann immer wieder auf die Schaltfläche klicken, um E, D, B, A zu sehen.
Ich bekomme diesen Stapel: C | E | D | B | Ein
PS: Meine Frage ist sehr ähnlich this jedoch angesichts der Antworten gibt auf diese Frage nicht passt. Einige Antworten, die ich dort und woanders gefunden habe:
- Ich kann NEW_TASK Flag nicht verwenden, da ich A, B im Stapel am Leben halten muss.
- Ich kann nicht startActivityForResult() auf D und dann finish() es in der Tat ist ein Hack, wie ich andere entscheidende Faktoren in E wie die Bereitstellung der Absicht zu einer anderen Aktivität abhängig von Benutzereingaben.
- Ich kann nicht beenden() Aktivität D, während die Absicht zu E, und dann beenden Sie() E während schlagen C, die das Problem tatsächlich lösen würde. Aber, wenn zurück auf E gedrückt wird, möchte ich es zurück zu D und nicht C.
- Wenn ich versuche,() auf E, sobald ich
startactivity(intent)
nach dem Setzen von Flags, es endet nur E, aber nicht D.
Können Sie versuchen, launchMode von 'singleInstance' in' singleTask' zu ändern? –