Essayez d'utiliser des interfaces.
Tout fragment qui doit renvoyer des données à son activité contenant doit déclarer une interface pour gérer et transmettre les données. Assurez-vous ensuite que votre activité contenant implémente ces interfaces. Par exemple:
JAVA
Dans votre fragment, déclarez l'interface ...
public interface OnDataPass {
public void onDataPass(String data);
}
Ensuite, connectez l'implémentation de la classe conteneur de l'interface au fragment dans la méthode onAttach, comme ceci:
OnDataPass dataPasser;
@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}
Dans votre fragment, lorsque vous devez gérer le passage de données, appelez-le simplement sur l'objet dataPasser:
public void passData(String data) {
dataPasser.onDataPass(data);
}
Enfin, dans votre activité contenant qui implémente OnDataPass
...
@Override
public void onDataPass(String data) {
Log.d("LOG","hello " + data);
}
KOTLIN
Étape 1. Créer une interface
interface OnDataPass {
fun onDataPass(data: String)
}
Étape 2. Ensuite, connectez l'implémentation de l'interface de la classe conteneur au fragment dans la méthode onAttach (YourFragment), comme ceci:
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
Étape 3. Dans votre fragment, lorsque vous devez gérer le passage de données, appelez-le simplement sur l'objet dataPasser:
fun passData(data: String){
dataPasser.onDataPass(data)
}
Étape 4. Enfin, dans votre activité implémente OnDataPass
class MyActivity : AppCompatActivity(), OnDataPass {}
override fun onDataPass(data: String) {
Log.d("LOG","hello " + data)
}