si gpfragment est null alors il y aura une exception de type nullpointerexception qui sera leve.
Eric
Version imprimable
si gpfragment est null alors il y aura une exception de type nullpointerexception qui sera leve.
Eric
j'ai mis en place ton code mais malheureusement je me rend compte que le fragment ne récupére pas lui même la valeur de l'édit text, puisque les valeur qu'il obtient sont nulles
le code :
MerciCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class GP_Fragment extends Fragment { EditText recupIP,recupNum; String valeurNum,valeurUrl; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView= inflater .inflate(R.layout.gp_fragment, container, false); // déclare l'édit text, que l'on chercher à partir de son id recupNum = (EditText) rootView.findViewById (R.id.etNum); // Récupére le text présent dans l'edit text valeurNum = recupNum.getText().toString(); // déclare l'édit text, que l'on chercher à partir de son id recupIP = (EditText) rootView.findViewById (R.id.etURL); // Récupére le text présent dans l'edit text valeurUrl = recupIP.getText().toString(); return rootView; } public String getText() { return valeurUrl; } public String getTextNum() { return valeurNum; }
Encore une fois, le test peut ne servir à rien. C'est une sécurité en cas de libération de mémoire par le smartphone afin que l'application ne plante pas juste pour un nullpointerexception. Tu peux ne pas le mettre et cela pourrait fonctionner très bien.
Ce n'est pas le code que j'ai écrit :)
Ca devrait être mieux.Code:
1
2
3
4
5
6
7
8
9 public String getText() { return recupIp.getText().toString(); } public String getTextNum() { return recupNum.getText().toString(); }
Bon je te montre mon code du fragment (ça ne fonctionne toujours pas) il s'arrete dès qu'il passe sur l'appelle des methodes get...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView= inflater .inflate(R.layout.gp_fragment, container, false); //Lire le fichier Num valeurNum=LireFichier.ReadSettings(rootView.getContext(),"Num"); //si le fichier est vide alors ecrire le numéro de dans if (valeurNum==null || valeurNum=="") { //Enregistrement Num EcrireFichier.WriteSettings(rootView.getContext(),"","Num",1); } // déclare l'édit text, que l'on chercher à partir de son id recupNum = (EditText) rootView.findViewById (R.id.etNum); //mettre le numéro dans l'éditText recupNum.setText(valeurNum); //Lire le fichier IP valeurUrl=LireFichier.ReadSettings(rootView.getContext(),"IP"); //si le fichier est vide alors ecrire l'url de dans if (valeurNum==null || valeurNum=="") { //Enregistrement ip EcrireFichier.WriteSettings(rootView.getContext(),"192.168.117.15:146","URL",1); } // déclare l'édit text, que l'on chercher à partir de son id recupIP = (EditText) rootView.findViewById (R.id.etURL); // mettre l'url dans l'édit Text recupIP.setText(valeurUrl); return rootView; } public String getText() { return recupIP.getText().toString(); } public String getTextNum() { return recupNum.getText().toString(); }
Est ce que recupIP et recupNum sont à null lorsque tu rentres dans ta fonction? Si oui, c'est que tu n'est pas entré dans le onCreate donc que tu n'as pas affiché ta vu. Dans ce cas, je ne pense pas que tu ais besoin de récupérer ces valeurs. Un simple test sur ces champs pour savoir si ils sont nuls devrait suffire.
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
Voila le code d'érreur mais au final j'ai l'impréssion que j'appel les méthodes get mais que le onCreatedView du fragment n'est pas exécuté avant du coup les valeur que les get retournent sont forcément vides..
Pas si vite dans les conclusions...
Mets un peu de côté les appels à tes getters. Essaie juste de lancer ton application sans aucune tentative de récupération des données du fragment. Si l'interface du fragment ne s'affiche pas, ce que onCreateView() de ce dernier ne s'exécute pas. Sinon, (Donc tu vois l'interface s'afficher) ce que onCreateView() s'exécute bien et le problème vient peut être d'ailleurs.
Christian,
UPP