Passer un paramètre à un fragment
Résolu
Hamster18
Messages postés
176
Date d'inscription
Statut
Membre
Dernière intervention
-
Hamster18 Messages postés 176 Date d'inscription Statut Membre Dernière intervention -
Hamster18 Messages postés 176 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je créé actuellement ma première application android, et je suis dans situation suivante : il faudrait que je passe à mon fragment un objet "Carte" (que j'ai crée). J'ai bien vu des tuto et des vidéo, mais je n'ai pas du tout comprit comment faire alors es ce que quelqu'un pourrait m'expliquer ou bien m'aiguiller vers un bon tuto s'il vous plaît ?
Merci d'avance pour vos réponse.
Cordialement.
Je créé actuellement ma première application android, et je suis dans situation suivante : il faudrait que je passe à mon fragment un objet "Carte" (que j'ai crée). J'ai bien vu des tuto et des vidéo, mais je n'ai pas du tout comprit comment faire alors es ce que quelqu'un pourrait m'expliquer ou bien m'aiguiller vers un bon tuto s'il vous plaît ?
Merci d'avance pour vos réponse.
Cordialement.
A voir également:
- Passer un paramètre à un fragment
- Remettre parametre usine pc - Guide
- Passer de qwerty a azerty - Guide
- Parametre dns - Guide
- Passer a windows 10 - Accueil - Mise à jour
- Parametre windows - Guide
5 réponses
Bonjour,
Il faut passer par les bundle et les arguments. As-tu vraiment besoin de l'objet en entier ou bien juste quelques champs ?
Tu es en Java ou en Kotlin ?
Il faut passer par les bundle et les arguments. As-tu vraiment besoin de l'objet en entier ou bien juste quelques champs ?
Tu es en Java ou en Kotlin ?
Hamster18
Messages postés
176
Date d'inscription
Statut
Membre
Dernière intervention
Je suis en java et non j'ai pas besoin de tout les champs
Dans ton Fragment, je te conseille de mettre une fonction statique comme ceci :
Pour créer ton fragment, tu fais comme ceci par exemple :
Ensuite, pour récupérer les valeurs dans ton fragment
// Définition des clés pour retrouver les valeurs dans le bundle public static final String EXTRA_PARAM_1 = "extra_param_1"; public static final String EXTRA_PARAM_2 = "extra_param_2"; public static MonFragment newInstance(String param1, int param2) { Bundle args = new Bundle(); args.putString(EXTRA_PARAM_1, param1); args.putInt(EXTRA_PARAM_2, param2); MonFragment fragment = new MonFragment(); fragment.setArguments(args); return fragment; }
Pour créer ton fragment, tu fais comme ceci par exemple :
MonFragment fragment = MonFragment.newInstance("coucou", 42);
Ensuite, pour récupérer les valeurs dans ton fragment
String param1 = getActivity().getIntent().getExtras().getString(EXTRA_PARAM_1);
Pour récupérer les valeur on met bien le bout de code dans le onCreateView() du fragment ? Car quand je teste dans newInstance() j'ai bien les valeur, mais je peux pas les récupérer ensuite (elles sont nuls )...
D'accord :
Voici le code du fragment :
et pour la créetion du frangment :
Voici le code du fragment :
public class FragmentCarte extends Fragment { private TextView textViewTexteCarte; private ImageView imageCarte; private AdapterView.OnItemSelectedListener listener; public static final String EXTRA_PARAM_1 = "extra_param_1"; public static final String EXTRA_PARAM_2 = "extra_param_2"; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment, container, false); textViewTexteCarte = (TextView) v.findViewById(R.id.textViewTexteCarte); imageCarte = (ImageView) v.findViewById(R.id.imageCarte); String param1 = getActivity().getIntent().getExtras().getString(EXTRA_PARAM_1); Log.d("tag", "Eelement Fragement" + param1 +" "); textViewTexteCarte.setText(param1); return v; } public static FragmentCarte newInstance(String param1, String param2) { Bundle args = new Bundle(); args.putString(EXTRA_PARAM_1, param1); args.putString(EXTRA_PARAM_2, param2); FragmentCarte fragment = new FragmentCarte(); fragment.setArguments(args); return fragment; } }
et pour la créetion du frangment :
ListeCarte listeCarte = new ListeCarte(); protected void onCreate(Bundle savedInstanceState) { FragmentCarte fragment = FragmentCarte.newInstance(listeCarte.listeCarte.get(1).getDilemme(), listeCarte.listeCarte.get(1).getImg()); viewPager = (ViewPager) findViewById(R.id.idpager); adapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); }
Quelle erreur as-tu ?
As-tu testé en debug pas-à-pas ?
Quand je vois ça :
Je me dis que ton objet
As-tu testé en debug pas-à-pas ?
Quand je vois ça :
ListeCarte listeCarte = new ListeCarte(); protected void onCreate(Bundle savedInstanceState) { FragmentCarte fragment = FragmentCarte.newInstance(listeCarte.listeCarte.get(1).getDilemme(), listeCarte.listeCarte.get(1).getImg()); ...
Je me dis que ton objet
listeCarteest vide...sauf si tu crées toute la structure de la liste dans le constructeur
ListeCarte().
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
D'accord merci
Si d'autre tombe sur le poste et ce demmande comment creer le fragment le code est en dessous sinon aller sur ce lien : https://mathias-seguy.developpez.com/tutoriels/android/comprendre-fragments/#LVI-A
Si d'autre tombe sur le poste et ce demmande comment creer le fragment le code est en dessous sinon aller sur ce lien : https://mathias-seguy.developpez.com/tutoriels/android/comprendre-fragments/#LVI-A
<LinearLayout android:id="@+id/firstpane" android:layout_height="fill_parent" android:layout_width="wrap_content" android:layout_weight="1" android:orientation="horizontal"> </LinearLayout>
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); FragmentCarte fragment = FragmentCarte.newInstance("coucou", 42); ft.replace(R.id.frag, fragment); //.replace ou .add ft.commit();