Je veux envoyer une chaîne de données de l'activité à un fragment, mais cela donne toujours une erreur. J'ai vérifié les liens ci-dessous et j'ai essayé, mais toujours identique.
Envoyer des données de l'activité au fragment Android Studio Envoyer des données de l'activité au fragment dans Android P>
Mon code est comme ci-dessous, myactivity.kt (je n'ai pas supprimé les lignes de commentaire, je les ai aussi essayées aussi) p> fragment est comme ci-dessous; donc du fragment, les deux données ci-dessus sont nuls. Il n'y a pas de données provenant de l'activité. P> Si j'utilise la ligne ci-dessous, dans le fragment, je réveille une erreur "kotlinnullpointeException" " p> Comment puis-je faire ça?
Merci. P> En ce qui concerne les suggestions de @ Mike, ces lignes Belove ont fonctionné pour moi, mettant à jour le poste. P> Activité; P>
var comingData = this!!.arguments!!.getString("imgviewname")
4 Réponses :
String strtext = getArguments().getString("key");
Malheureusement n'a pas fonctionné, lancez "KotlinnullNullPointerException" Erreur à "Streng Strtext = getArguments (). GetString (" Key ")" Ligne.
essayez ces arguments? .oule {stress strtext = it.getstring ("clé", "")}
Impossible de convertir ce code en Kotlin, également Android Studio. Je ne comprends pas où dois-je ajouter cet argument?
Dans votre fragment
Je mets sous ONCREAreview ce code ".let {stritt strtext = it.getstring (" Key "," ")}", mais cela donne une erreur. "S'attendre à un élément". Désolé je suis débutant à la programmation Android.
Vous pouvez également déclarer une méthode publique dans votre activité qui renvoie un type de chaîne et vous pouvez y accéder directement dans votre fragment.
Exemple dans votre activité Var Image = "URL" Fun GetMyData (): String {Retour Image} et dans votre fragment @Override Public View OnCreateView (Influse de layouxflater, conteneur de groupe, Bundle SavedInstaceState) {var mydatafromactivity = Activity.getMyData (); Vue de retour; }
Maintenant, je vois, mais le problème est que si je pose cette méthode à la racine de ma classe d'activité, cela fonctionne, je peux appeler du fragment. Mais je dois appeler cette méthode à l'intérieur "img_foto1.setonclicklistener", donc si je mets à l'intérieur de cet auditeur, cela ne fonctionne pas. Je veux dire que je ne peux pas appeler cette méthode du fragment. Ou je ne sais pas comment appeler du fragment, si possible?
donne la valeur de la chaîne dans imagefo.setonclicklistener {image = "nouvelle chaîne"}
Mais je ne peux mettre aucun paramètre à la méthode OnClickListener comme celui-ci "img_foto1.setonclicklistener (image: chaîne)". Aussi essayé avec le paramètre comme vous avez écrit. Mais il jette "aucune des fonctions suivantes ne peut être appelée avec les arguments fournis" Erreur.
Essayez d'utiliser l'interface pour accéder aux données. En classe où vous souhaitez utiliser les données
class B{
PassDataListener listener;
public(PassDataListener passDataListener){
this.listener=passDataListener;
}
//PASSING DATA TO CLASS WHERE YOU THIS DATA
String text="abc";
listener.getText(text);
}
J'utilise déjà une interface pour envoyer des données de fragment à l'activité. Pour le côté opposé, devrais-je créer une autre interface? Je vais essayer, mais ne paque pas un peu facile?
À l'aide de la boîte de dialogue.Show, il apparaîtra dans la fenêtre contextuelle où l'intention passera des données à une autre activité / fragment et elle signifie également une activité à fragmenter ou à vérifier. et il n'y a pas de lien entre la boîte de dialogue et l'intention. Je pense que au lieu d'utiliser l'intention de dialogue vous aidera à atteindre votre objectif.
Merci pour la suggestion, je vais essayer une méthode d'intention aussi. Mais si j'utilise l'intention, je ne peux pas contempler le fragment comme une fenêtre d'activité, non? Je veux dire si j'utilise l'intention, ce sera un nouveau fragment plein écran, pas comme la boîte de dialogue?
dans votre activité: - dans votre fragment: - p> Essayez cela peut être ce qui vous aidera. p> p>
J'utilise déjà "dialog.show (supportfragmentManager," choisir une photo ")" dans mon "img_foto1.setonclicklistener" donc je ne sais pas si je peux utiliser une autre méthode d'intention? Il jette des erreurs d'activitéNotFoundException.
dans votre activité, dans votre fragment p>
J'ai essayé de convertir le code d'activité en kotlin, mais Android Studio n'a pas pu convertir une classe de "transaction". Il jette une erreur "référence non résolue".
@sleepy se réfère DIS `` `` Stackoverflow.com/a/53965039/12273964 `` `
Dans votre premier extrait, la boîte de dialogue code> > que vous affichez n'est pas celle que vous définissez les arguments sur précédemment,
fraginfo code>.show () code>fraginfo code> ou changez-le pour définir les arguments sur la boîte de dialogue code>. Le deuxième bloc n'est pas correct, car vous créez un nouveauvide code> là-bas, ne pas récupérer les arguments. Vous avez la bonne idée dans votre dernier bloc, mais assurez-vous simplement de corriger le premier, définissant les arguments de la droitefragment code> instance.Merci beaucoup @Mike, vos suggestions ont résolu le problème. J'ajoute les codes de travail à mon message d'origine.