Essayez d'utiliser des interfaces.
Tout fragment qui doit renvoyer des données à l'activité qui le contient doit déclarer une interface pour gérer et transmettre les données. Ensuite, assurez-vous que l'activité qui le contient 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 l'interface de la classe conteneur au fragment dans la méthode onAttach, comme suit :
OnDataPass dataPasser;
@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}
Dans votre fragment, lorsque vous avez besoin de gérer le passage des données, il suffit de l'appeler sur l'objet dataPasser :
public void passData(String data) {
dataPasser.onDataPass(data);
}
Enfin, dans votre activité de contention qui met en œuvre OnDataPass
...
@Override
public void onDataPass(String data) {
Log.d("LOG","hello " + data);
}
KOTLIN
Étape 1. Créez l'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 suit :
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
Étape 3. Dans votre fragment, lorsque vous avez besoin de gérer le passage des données, il suffit de l'appeler sur l'objet dataPasser :
fun passData(data: String){
dataPasser.onDataPass(data)
}
Étape 4. Enfin, dans votre activité implémentant OnDataPass
class MyActivity : AppCompatActivity(), OnDataPass {}
override fun onDataPass(data: String) {
Log.d("LOG","hello " + data)
}
0 votes
Est-ce insuffisant ? Vous pouvez envoyer tout ce que vous voulez, peut-être pouvez-vous expliquer davantage, que voulez-vous accomplir ?
0 votes
Dans le document, je n'ai pas compris comment, par exemple, je pouvais passer une valeur ou une chaîne de caractères de l'activité au fragment ou vice-versa. Merci
2 votes
La meilleure façon de gérer les appels asynchrones des fragments et de leur renvoyer des données est d'implémenter des BroadcastReceivers des deux côtés. Vous devriez de toute façon le rendre asynchrone si vous travaillez avec un nombre non spécifique de fragments.
0 votes
@punisher_malade Non, ça marche pour moi.