2016-04-20 3 views
1

Ich habe eine HashMap, um meine laufenden Absichten zu verfolgen; Jedes Mal, wenn ich eine neue Absicht starte, die eine benutzerdefinierte ChatActivity-Klasse ausführt, speichere ich sie in der HashMap.Wie kann man eine Absicht wiederverwenden und an die Front bringen?

Die Absichten bleiben aktiv (ich verwende nicht finish() auf ihnen); Ich möchte in der Lage sein, einen von ihnen "zurück" zu bringen, so dass alle Ansichten und Informationen, die ich verändert habe, während diese Absicht aktiviert wurde, immer noch da sind.

Ich hatte versucht, Flags in verschiedenen Formen wie unten ohne Erfolg.

Intent intent = data.getDictionary().get(getName(position)); 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

Es scheint, dass, wenn ich nichts Flagge verwenden geschieht, und wenn ich es nicht verwenden, es beginnt gerade eine neue Tätigkeit aus frischem (nicht meinem gewünschten Verhalten).

Ich vermute, dass meine Probleme von der Tatsache herrühren, dass alle meine Absichten die gleiche Klasse führen, aber ich lasse Sie der Richter davon sein.

Vielen Dank.

+0

anyone? :( Ich möchte wirklich nicht alle Daten jedes Mal neu laden .. –

+0

Haben Sie irgendwelche anderen Flags auf die ursprüngliche Absicht gesetzt? – ootinii

+0

oh Entschuldigung macht nichts, Sie verwendet setFlags nicht AddFlags – ootinii

Antwort

1

Möglicherweise möchten Sie diese in Ihrer Manifest-Datei, um zu versuchen: android:launchMode="singleTop"

Nach dem doc:

Wenn bei Aufnahme der Tätigkeit, gibt es bereits eine Instanz der gleichen Aktivitätsklasse im Vordergrund, der mit dem Benutzer interagiert, dann verwenden Sie diese Instanz erneut. Diese vorhandene Instanz erhält einen Aufruf von Activity.onNewIntent() mit der neuen Absicht, die gestartet wird.

Verwandte Themen