0
votes

Changer une image lorsque le bouton cliquez sur un autre fragment

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;

}
}


2 commentaires

Où est la sortie LOGCAT?


Juste l'a ajouté :)


3 Réponses :


0
votes

Il est difficile de dire sans voir l'exception, mais cela pourrait être parce que les mappages de paquet sont sensibles à la casse.

Votre Paramètres de paramètres utilise "RESID", mais votre Homefragment s'attend à "résider". Si aucun mappage n'est trouvé dans le paquet, vous recevrez la valeur par défaut de 0 pour RIDID . Il est possible que vous écrasiez lorsque vous appelez iv.setimageresource (0); .


0 commentaires

0
votes

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;

        }


1 commentaires

Bonjour merci pour votre réponse, j'ai toujours la même exception dans mon logcat;)



0
votes

Ne passez pas la valeur du fragment vers fragment directement.

Vous devez utiliser setarguments à partir de ParamètresFragment et GetArguments dans Homefragment


3 commentaires

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 , lorsque le bouton OnCliquez, rappelez-vous à l'activité et transmettez votre valeur et utilisez SETARGUMuments dans l'activité où vous trans sur Avatarfragment Enfin, utilisez getarguments dans avatarfragment pour obtenir la valeur que vous passez à partir de ParamètresFRAGEMENT .


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 ?