Recht auf Fragment jetzt bin ich mit: -Callback-Funktion did't Auslöser, wenn sie von DialogFragment Aufruf
1) Aktivität, die die Haupttätigkeit ist, die von AppCompactActivity
erstreckt.
2) fragment
Klasse, die von fragment
erstreckt, das ist das Fragment, das (1)- ProfileTeacherActivity.java
3) Fragment Klasse von Hauptaktivität bezeichnet wurde, die von DialogFragment
erstreckt, dieser Dialog Aufruf von Fragment (2)- ModalBox.java
Also, im Grunde ist dies nur ein einfacher Ablauf der Ausführung. Zu Beginn, die Anwendungen zeigen die main activity (1)
Schublade, die ein paar Links als Beispiel ein Profil Link haben, wenn Sie auf diesen Link klicken, ruft die Anwendung fragment (2)
Details des Profils mit einem Bearbeitungsschaltfläche aufrufen. Nach dem Klicken auf die Schaltfläche "Bearbeiten" rufen die Anwendungen DialogFragment (3)
auf, die einige von EditText
zum Bearbeiten des Benutzerprofils enthalten.
Was ich erreichen möchte, ist, nach der Bearbeitung des Benutzerprofils und erfolgreich in der Datenbank gespeichert, ich habe versucht, Benutzerdaten zurück zu fragment (2)
senden, nur um die neuesten Informationen anzuzeigen, leider hat es nicht funktioniert.
Hier ist, was ich versucht habe:
1) Erstellen von Schnittstellen innerhalb DialogFragment (3)- ModalBox.java
public class ModalBox extends DialogFragment{
....
public interface EditProfileModalBoxInterface {
void onFinishEditProfile(HashMap<String, String> dataPassing);
}
...
...
}
2) Innerhalb DialogFragment ich habe auch .setPositiveButton
Funktion für OK
Taste. - ModalBox.java
public class ModalBox extends DialogFragment{
...
...
public Dialog onCreateDialog(Bundle savedInstanceState) {
...
builder
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, int id) {
// At here i'm using retrofit2 http library
// to do updating stuff
// and inside success's callback of retrofit2(asynchronous)
// here i call the below function to send data
// dataToSend is a HashMap value
sendBackResultToParent(dataTosend);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
.....
}
// Function called inside success's callback of retrofit2
public void sendBackResultToParent(HashMap<String, String> data) {
// instantiated interface
EditProfileModalBoxInterface ls=(EditProfileModalBoxInterface)getTargetFragment();
// declaring interface's method
ls.onFinishEditProfile(data);
}
}
3) Schließlich, ich bin implementiert jene Schnittstelle innerhalb fragment
(2)- ProfileTeacherActivity.java
public class ProfileTeacherActivity extends Fragment
implements ModalBox.EditProfileModalBoxInterface{
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
.....
.....
}
// At here the interface's method did't triggered
@Override
public void onFinishEditProfile(HashMap dataPassedFromDialog) {
Toast.makeText(getActivity(), "Testing...." , Toast.LENGTH_LONG).show();
}
}
Was ich tue, ist verwirrt im Moment bin, passiert das Problem nur, wenn ich dies genannt Funktion sendBackResultToParent(dataTosend);
innerhalb von Retrofit2 Erfolg Callback, wird ausgelöst, wenn außerhalb von ihm anrufen. Ich nehme an, der Async namens verursacht dies. Wenn ich Promise oder etwas Ähnliches verwenden könnte, oder gibt es einen Workaround?
Die folgenden bestehenden Lösungen hat in meinem Fall nicht:
- Callback to a Fragment from a DialogFragment
- How to send data from DialogFragment to a Fragment?
- Send Data from DialogFragment to Fragment
mich für weitere Eingaben Fragen Sie, ob oben Anwendungsfall nicht klar tat genug oder falsch verstanden. Danke für die Hilfe. Grüße.
Nicht relevant, aber die Benennung eines Fragments "ProfileTeacherActivity" ist ein bisschen irreführend. :) –
@TalhaMir Ja, das ist mein dummer Fehler. ;) –