Passer un paramètre à un fragment
Résolu/Fermé
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
-
10 mars 2020 à 12:59
Hamster18 Messages postés 176 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 12 mars 2020 à 13:30
Hamster18 Messages postés 176 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 12 mars 2020 à 13:30
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
- Passer de qwerty a azerty - Guide
- Passer a windows 10 - Accueil - Mise à jour
- Remettre parametre usine pc - Guide
- Mettre un mot de passe sur un dossier - Guide
- Parametre windows - Guide
5 réponses
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
11 mars 2020 à 09:14
11 mars 2020 à 09:14
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 ?
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
11 mars 2020 à 09:53
11 mars 2020 à 09:53
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);
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
11 mars 2020 à 11:23
11 mars 2020 à 11:23
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 )...
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
11 mars 2020 à 11:25
11 mars 2020 à 11:25
oui, dans le
onCreateView()
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
>
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
Modifié le 11 mars 2020 à 11:39
Modifié le 11 mars 2020 à 11:39
Bin je ne comprend pas alors pourquoi je reçois une valeur null alors ... Cela pourrais venir d'ou ?
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
>
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
11 mars 2020 à 11:48
11 mars 2020 à 11:48
Fais voir ton code : du fragment et de la création du fragment
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
11 mars 2020 à 12:49
11 mars 2020 à 12:49
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); }
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
11 mars 2020 à 13:47
11 mars 2020 à 13:47
Pardon, c'est ma faute... J'ai mélangé 2 choses ^^
Pour récupérer les arguments du fragment, c'est plutôt comme ceci :
Note : tu peux renommer les "param" que j'avais mis en quelque chose de plus parlant pour toi ;)
Pour récupérer les arguments du fragment, c'est plutôt comme ceci :
String param1 = getArguments().getString(EXTRA_PARAM_1);
Note : tu peux renommer les "param" que j'avais mis en quelque chose de plus parlant pour toi ;)
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
>
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
11 mars 2020 à 18:45
11 mars 2020 à 18:45
Oui j'y compte bien mais pour l'instant j'évite les risque d'erreur. D'ailleurs malgré la correction il y a toujours l'erreur ...
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
>
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
11 mars 2020 à 18:54
11 mars 2020 à 18:54
Es-tu sûr de passer les bons paramètres au fragment ? De ce que j'en vois, ta liste n'est pas remplie quand tu fais appel au fragment... D'ailleurs, tu en fait quoi ?
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
>
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
11 mars 2020 à 19:32
11 mars 2020 à 19:32
Bin pour être sur j'ai passer directement les mêmes paramètres que vous mais j'ai la même erreur
BunoCS
Messages postés
15505
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 février 2025
3 913
>
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
Modifié le 12 mars 2020 à 08:58
Modifié le 12 mars 2020 à 08:58
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
Hamster18
Messages postés
176
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2024
12 mars 2020 à 13:29
12 mars 2020 à 13:29
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();
11 mars 2020 à 09:29