2016-06-30 2 views
0

Ich erstelle einen Browser für Android und möchte meine Aktivität duplizieren, um eine neue Multitasking-Aufgabe mit derselben Aktivität zu erstellen.Wie erstelle ich die gleiche Aktivität Mehrere Male, um einen Effekt wie Google Chrome Tabs zu haben?

Intent intent=new Intent(this, MainActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
startActivity(intent); 

Dies ist mein Code, bitte helfen. Dank

+1

und es funktioniert nicht, oder? –

+0

Verwenden Sie Fragmente https://developer.android.com/guide/components/fragments.html –

Antwort

1

Verwenden ersetzen diese die Flagge new_task mit new_document

Intent Absicht = new Intent (this, MainActivity.class); intent.setFlags (Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); startActivity (Absicht);

+0

Es funktioniert sehr! –

+0

Wenn Sie denken, dass es Ihr Problem gelöst hat, markieren Sie es als Antwort für den Rest der Benutzer zu wissen –

0

können Sie FLAG_ACTIVITY_MULTIPLE_TASK und FLAG_ACTIVITY_NEW_DOCUMENT versuchen

FLAG_ACTIVITY_MULTIPLE_TASK

Dieses Flag verwendet wird, um eine neue Aufgabe zu erstellen und eine Tätigkeit hinein zu starten. Dieses Flag ist immer entweder mit FLAG_ACTIVITY_NEW_DOCUMENT oder FLAG_ACTIVITY_NEW_TASK gepaart. In beiden Fällen würden diese Flags allein durch vorhandene Tasks nach Einsen suchen, die mit diesem Intent übereinstimmen. Nur wenn keine solche Aufgabe gefunden wird, würde eine neue Aufgabe erstellt werden. Bei der Kombination mit FLAG_ACTIVITY_MULTIPLE_TASK werden diese beiden Verhaltensweisen in geändert, wobei die Suche nach einer übereinstimmenden Aufgabe übersprungen und bedingungslos eine neue Aufgabe gestartet wird. Wenn Sie mit FLAG_ACTIVITY_NEW_TASK verwendet werden, verwenden Sie dieses Flag nicht, es sei denn, Sie implementieren einen eigenen Application Launcher auf oberster Ebene. Wird in Verbindung mit FLAG_ACTIVITY_NEW_TASK verwendet, um das Verhalten zu deaktivieren, mit dem eine vorhandene Aufgabe in den Vordergrund gebracht wird. Wenn diese Option aktiviert ist, wird immer eine neue Aufgabe gestartet, um die Aktivität für die Absicht zu hosten, unabhängig davon, ob es bereits eine vorhandene Aufgabe gibt, die dieselbe Funktion ausführt.

Da das Standardsystem keine grafische Aufgabenverwaltung enthält, sollten Sie dieses Flag nicht verwenden, es sei denn, Sie geben einem Benutzer die Möglichkeit, zu den von Ihnen gestarteten Aufgaben zurück zu zurückzukehren. Details zur Verwendung dieses Flags zum Erstellen von neuen Dokument-Tasks finden Sie unter FLAG_ACTIVITY_NEW_DOCUMENT.

> Dieses Flag wird ignoriert, wenn FLAG_ACTIVITY_NEW_TASK oder FLAG_ACTIVITY_NEW_DOCUMENT nicht ebenfalls gesetzt ist.

FLAG_ACTIVITY_NEW_DOCUMENT

Dieses Flag am Aktivität durch diese Absicht ins Leben gerufen verwurzelt öffnen Sie ein Dokument in eine neue Aufgabe verwendet. Durch die Verwendung dieses Flags oder seines äquivalenten Attributs, documentLaunchMode werden mehrere Instanzen der gleichen Aktivität, die verschiedene Dokumente enthält, in der aktuellen Aufgabenliste angezeigt.

Die Verwendung der Aktivitätsattributform dieses Dokuments, documentLaunchMode, ist gegenüber der hier beschriebenen Intent-Markierung.Das Attributformular ermöglicht es der Aktivität, das Verhalten mehrerer Dokumente für alle Launcher der Aktivität anzugeben, während die Verwendung dieses Flags jeden Intent erfordert, der die Aktivität startet, um sie anzugeben.

Beachten Sie, dass die Standardsemantik dieses Flags w.r.t. ob der recents-Eintrag für ihn nach Abschluss der Aktivität beibehalten wird, ist anders als die Verwendung von FLAG_ACTIVITY_NEW_TASK und documentLaunchMode - wenn dieses Flag zum Erstellen eines neuen Recents-Eintrags verwendet wird, wird dieser Eintrag standardmäßig einmal entfernt Die Aktivität ist beendet. Sie können dieses Verhalten mit FLAG_ACTIVITY_RETAIN_IN_RECENTS ändern.

0

Es gibt zwei Möglichkeiten, dies zu tun. Beide sind in Android Recents Screen guide gut beschrieben.

Die erste Methode ist die Absicht Flags zu verwenden:

final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); 
newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); 
newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
startActivity(newDocumentIntent); 

Die zweite Methode ist das <activity> Attribut zu verwenden, android:documentLaunchMode.

Verwandte Themen