So führen Sie eine Aktion aus, nachdem die DialogFragment-Schaltfläche positiv geklickt wurde

8

Ich habe das folgende DialogFragment aus der Android-Dokumentation erstellt:

Öffentliche Klasse PayBillDialogFragment erweitert DialogFragment {

%Vor%

Von einem anderen Fragment (einem ListFragment), wenn eine Zeile der Liste angeklickt wird, sollte das DialogFragment geöffnet werden und nach dem Drücken der positiven Schaltfläche des DialogFragments möchte ich die ausgewählte Zeile des ListFragments entfernen und auch aufrufen können eine Methode zum Ausführen einer Remote-Aktion, die dem Entfernen zugeordnet ist. Ich habe das ListFragment folgendermaßen implementiert:

%Vor%

Was ich nicht weiß ist, wie man mit der Aktion nach dem Klick auf den positiven Knopf des DialogFragments umgeht. Kannst du mir helfen?

EDIT: um zu verdeutlichen, das ist der Workflow: Klicken Sie auf die Liste - & gt; zeige das DialogFragment - & gt; Nach dem Klicken auf DialogFragment entfernen Sie das Element aus der Liste.

    
Raffo 12.04.2013, 11:29
quelle

4 Antworten

11

So behandle ich die Kommunikation zwischen Fragment und Dialogfragment

Beispielfragment:

%Vor%

Beispiel DialogFragment:

%Vor%

Dies ist die einzige Methode, die ich auch beim Ändern der Orientierung anwenden kann.

    
rciovati 18.04.2013 14:21
quelle
2

Sie haben zwei Möglichkeiten, ListFragment von PayBillDialogFragment aufzurufen.

Zuerst wird von den Android-Richtlinien empfohlen. Die gesamte Kommunikation läuft über das Hosting Activity . So erhalten Sie das Hosting Activity , indem Sie ((HostingActivity)PayBillDialogFragment.getActivity()).deleteItem() in PayBillDialogFragment.setPositiveButton(onClick()) aufrufen. In HostingActivity.deleteItem() erhole den aufgeblähten PayBillDialogFragment und rufe eine delete Methode auf.

Siehe Ссылка

Sekunde . Sie können nur DialogFragment.setTargetFragment() beim Erstellen des DialogFragment-Objekts und dann innerhalb PayBillDialogFragment.setPositiveButton(onClick()) können Sie PayBillDialogFragment by DialogFragment.getTargetFragment() und rufen Sie die Methode delete dort.

Siehe Rückruf zu einem Fragment von einem DialogFragment

    
riwnodennyk 18.04.2013 13:58
quelle
1

Um den Dialog aufzurufen, können Sie folgendes verwenden:

%Vor%

In Ihrem dialogFragment

%Vor%     
Homam 12.04.2013 11:43
quelle
0

Das Listenfragment würde einen Adapter verwenden, um Elemente anzuzeigen. Der Adapter benötigt eine Eingabe in Form einer Sammlung. Was Sie also tun können, ist, wenn der Benutzer die Schaltfläche OK im Dialogfragment drückt und Sie das Listenfragment zurücksenden, können Sie dieses bestimmte Element aus der Sammlung entfernen und den Adapter des Listenfragments erneut mit der geänderten Sammlung festlegen.

    
takesavy 25.04.2014 06:46
quelle