Je veux pouvoir cliquer sur un bouton de mon fragment de paramètres, ce qui modifiera une image sur un autre fragment appelé fragment à domicile. Mon application continue de se bloquer une fois que je clique sur le bouton et je ne suis pas sûr de savoir pourquoi.
Paramètres Fragment: P>
public class AvatarFragment extends Fragment { public ImageView IV; @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_avatar, container, false); // init image view IV = (ImageView) rootView.findViewById( R.id.Torso ); // getting extras //Bundle bundle = getActivity().getIntent().getExtras(); // Bundle bundle=getArguments(); Bundle b=getArguments(); if(b!= null) { int resid = b.getInt("resID"); IV.setBackgroundResource(resid); } return rootView; } }
3 Réponses :
Il est difficile de dire sans voir l'exception, mais cela pourrait être parce que les mappages de paquet sont sensibles à la casse. p>
Votre Paramètres de paramètres code> utilise "RESID", mais votre
Homefragment code> s'attend à "résider". Si aucun mappage n'est trouvé dans le paquet, vous recevrez la valeur par défaut de 0 pour
RIDID code>. Il est possible que vous écrasiez lorsque vous appelez
iv.setimageresource (0); code>. P>
Votre implémentation d'image dans le code est fausse, vous devez introduire votre image de vue comme ceci:
@Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_avatar, container, false); // init image view IV = (ImageView) rootView.findViewById( R.id.Torso ); // getting extras Bundle bundle = getActivity().getIntent().getExtras(); if(bundle!= null) { int resid = bundle.getInt("resId"); IV.setImageResource(resid); } return rootView; }
Bonjour merci pour votre réponse, j'ai toujours la même exception dans mon logcat;)
Ne passez pas la valeur du fragment vers fragment directement. P>
Vous devez utiliser setarguments code> à partir de ParamètresFragment et
GetArguments Code> dans Homefragment P>
Donc, vous dites quelque chose comme: Bundle B = New Bundle (); B.Pompanie ("Resid", R.Drawable.Torso2green); ParamètresFragment.Cela.Setarguments (B);
@FUSIOZIII OUI.IN ParamètresFRAGEMENT CODE>, lorsque le bouton OnCliquez, rappelez-vous à l'activité et transmettez votre valeur et utilisez
SETARGUMuments CODE> dans l'activité où vous trans sur
Avatarfragment code> Enfin, utilisez
getarguments code> dans
avatarfragment code> pour obtenir la valeur que vous passez à partir de
ParamètresFRAGEMENT code>.
Merci :) J'ai mis à jour ma solution mais je ne pense pas que le fragment d'avatar soit même appelé après le bouton clic. Des idées ?
Où est la sortie LOGCAT?
Juste l'a ajouté :)