Versuchen Sie es mit Schnittstellen.
Jedes Fragment, das Daten an seine enthaltende Aktivität zurückgeben soll, sollte eine Schnittstelle deklarieren, die die Daten verarbeitet und weitergibt. Stellen Sie dann sicher, dass Ihre enthaltende Aktivität diese Schnittstellen implementiert. Beispielsweise:
JAVA
Deklarieren Sie in Ihrem Fragment die Schnittstelle ...
public interface OnDataPass {
public void onDataPass(String data);
}
Verbinden Sie dann die Implementierung der Schnittstelle der enthaltenden Klasse mit dem Fragment in der onAttach-Methode wie folgt:
OnDataPass dataPasser;
@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}
Wenn Sie in Ihrem Fragment die Datenübergabe verarbeiten müssen, rufen Sie sie einfach im dataPasser-Objekt auf:
public void passData(String data) {
dataPasser.onDataPass(data);
}
Schließlich in Ihrer enthaltenen Aktivität, die OnDataPass
...
@Override
public void onDataPass(String data) {
Log.d("LOG","hello " + data);
}
KOTLIN
Schritt 1. Schnittstelle erstellen
interface OnDataPass {
fun onDataPass(data: String)
}
Schritt 2. Verbinden Sie dann die Implementierung der Schnittstelle der enthaltenden Klasse mit dem Fragment in der onAttach-Methode (YourFragment) wie folgt:
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
Schritt 3. Wenn Sie in Ihrem Fragment die Datenübergabe verarbeiten müssen, rufen Sie sie einfach im dataPasser-Objekt auf:
fun passData(data: String){
dataPasser.onDataPass(data)
}
Schritt 4. Schließlich implementiert OnDataPass in Ihrer Aktivität
class MyActivity : AppCompatActivity(), OnDataPass {}
override fun onDataPass(data: String) {
Log.d("LOG","hello " + data)
}