Ich habe mehrere Beiträge über die Verwendung dieses gelesen, aber muss etwas verpassen, wie es für mich nicht funktioniert. Meine Aktivität A hat launchmode = "singleTop" im Manifest. Es startet Aktivität B mit launchmode = "singleInstance". Aktivität B öffnet einen Browser und empfängt und beabsichtigt zurück, weshalb es singleInstance ist. Ich versuche, die Zurück-Schaltfläche zu überschreiben, sodass der Benutzer zurück zur Aktivität A gesendet wird, und kann dann Zurück drücken, um die Aktivität zu verlassen, anstatt wieder zu Aktivität B zurückzukehren.Wie verwenden Sie Intent.FLAG_ACTIVITY_CLEAR_TOP zum Löschen des Aktivitätsstapels?
// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) onBackPressed();
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}
Nachdem aus dem Browser zurückkehrt, der Stapel ... A, B, Browser, B
ich diesen Code ist also zu erwarten, um den Stapel zu ändern ... A ... Ein erneutes Drücken bringt den Benutzer zurück zum Home-Bildschirm.
Stattdessen scheint es, den Stapel zu ändern ... A, B, Browser, B, A ... als ob diese Flags nicht da sind.
Ich habe versucht, beenden() in Aktivität B nach StartActivity, aber dann die Schaltfläche zurück bringt mich zurück zum Browser wieder!
Was fehlt mir? Vielen Dank!
Eigentlich ... 'Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP' wird tun –
Überprüfen Sie Steel_fedex Lösung für sein Beispiel. – Darpan