Der beste Weg, um das Verhalten von DialogFragment zu beheben?

8

Ich habe also ein DialogFragment, das die Bereichsauswahlliste anzeigt. Sobald der Benutzer auf den Bereich klickt, ruft die Liste die Daten erneut auf, um die Auswahlliste für die Straße anzuzeigen. An dieser Stelle möchte ich dem Benutzer erlauben, die Hardware-Zurück-Taste zu drücken, um zur Bereichsauswahl zurückzukehren. Ist das möglich? Ich habe versucht, ein paar Methoden unten zu überschreiben, aber ich kann nur auf das Ereignis tippen, aber nicht verhindern, dass es passiert.

%Vor%

dismiss() wird aufgerufen, wenn der Benutzer die Schaltfläche "Zurück" drückt, aber selbst wenn ich super.dismiss() nicht aufruft, wird der Dialog unabhängig davon abgebrochen.

Gibt es eine Möglichkeit, dies zu tun? Ich untersuche auch, wie die Google + App ActionBar im DialogFragment anzeigt, um HomeAsUp bereitzustellen, aber ich kann keine Informationen darüber finden.

    
RobGThai 17.12.2013, 09:02
quelle

3 Antworten

5

Ich sehe zwei Lösungen:

Das einfachste: Die Bereichsauswahl und die Auswahlliste für die Straße haben beide als normale Fragmente und sie haben beide eine separate Aktivität und haben diese Aktivität als Dialog durch ein einfaches Thema: <activity android:theme="@android:style/Theme.Dialog" /> und excludeFromRecents="true" , um diese nicht in den zuletzt verwendeten Apps zu haben. Die Bereichsauswahl wird zuerst geladen, dann fügen Sie die Straßenauswahl über addToBackStack(null) hinzu, so dass Sie AreaSelection Fragment darunter haben.

Wenn Sie aus irgendeinem Grund keine separate Aktivität für diesen Zweck haben möchten, können Sie einen Dialoglistener aus Ihrem Dialogfragment hinzufügen, und sein Implementor (die Aktivität) öffnet AreaFragment . Mit einem grundlegenden Verständnis Ihres Codes sollte dieses einfache Projekt es tun:

Die Eigentümeraktivität:

%Vor%

AreaSelectionFragment (erweitern Sie es auf Ihre Bedürfnisse):

%Vor%

Und StreetSelectionFragment (noch einmal: Erweitere es auf deine Bedürfnisse):

%Vor%     
gunar 17.12.2013, 10:43
quelle
3
  

Der beste Weg, um das Verhalten von DialogFragment zu behandeln?

Der beste Weg, um das Back-Verhalten auf einem DialogFragment zu behandeln, wäre, sich nicht damit herumzuschlagen und es so zu belassen, wie es ist, und dabei Ihren derzeitigen Ansatz zu überdenken. Wenn ich einen Dialog in einer App sehe und mich zurückmelde, erwarte ich, dass den Dialog aus dem Bildschirm entfernt und nicht zwischen den Dialogseiten navigiert ( Ich hoffe, ich habe deine Frage nicht falsch verstanden).

  

Gibt es eine Möglichkeit, dies zu tun?

In Ihrem DialogFragment könnten Sie eine benutzerdefinierte Dialog verwenden (ich nehme an, dass Sie nur den onCreateDialog() -Rückruf verwenden, um Dialog mit den Listen zurückzugeben), für den Sie den onKeyDown() -Rückruf außer Kraft setzen um mit der gedrückten Rückseite umzugehen:

%Vor%
  

Ich untersuche auch, wie die Google+ App ActionBar in der   DialogFragment, um HomeAsUp bereitzustellen, aber ich kann keine Informationen darüber finden.

Sie können eine Activity immer wie eine Dialog aussehen lassen.

    
Luksprog 17.12.2013 10:18
quelle
1
%Vor%     
prince_sachdeva 22.06.2016 11:14
quelle