IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème lors d'un passage d'une activité à une autre


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut Problème lors d'un passage d'une activité à une autre
    Bonjour,

    Quand je clique sur l'Item de ma ListView, mon application plante et j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    06-08 16:56:18.933: E/AndroidRuntime(699): FATAL EXCEPTION: main
    06-08 16:56:18.933: E/AndroidRuntime(699): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.cartedefidelite/com.example.cartedefidelite.FideliteActivity}: java.lang.NullPointerException
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.ActivityThread.access$600(ActivityThread.java:122)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.os.Looper.loop(Looper.java:137)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.ActivityThread.main(ActivityThread.java:4340)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at java.lang.reflect.Method.invokeNative(Native Method)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at java.lang.reflect.Method.invoke(Method.java:511)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at dalvik.system.NativeStart.main(Native Method)
    06-08 16:56:18.933: E/AndroidRuntime(699):  Caused by: java.lang.NullPointerException
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at com.example.cartedefidelite.AffichageClientActivity.onCreate(AffichageClientActivity.java:29)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at com.example.cartedefidelite.FideliteActivity.onCreate(FideliteActivity.java:7)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.Activity.performCreate(Activity.java:4465)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	... 11 more
    L'erreur semble provenir de ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public class AffichageClientActivity extends MainActivity /*implements OnItemClickListener*/{
    	clientBDD cliBDD= new clientBDD(this);
    	ListView clientListe;
    	client cli = new client("","","","","","","",0,0);
    	private ArrayAdapter<String> ClientAdapter =null;
    	protected void onCreate(Bundle saveInstanceBundle){
    		super.onCreate(saveInstanceBundle);
    		setContentView(R.layout.listingclient);
    		clientListe = (ListView)findViewById(R.id.list);
     
    		//à faire passer en globale pour récupérer dans fidelité
    		//récupération de la valeur de l'EditText
    		Bundle objetbundle= this.getIntent().getExtras();
    		String nomduclient=objetbundle.getString("nomclient");
     
     
    		clientListe = (ListView)findViewById(R.id.list);
    		clientListe.setOnItemClickListener(ItemListener);
    		ClientAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
    		clientListe.setAdapter(ClientAdapter);
    		cliBDD.open();
    		cli = cliBDD.getClientwithNom(nomduclient);
    		if (cli != null){
    		//affichage du ou des client(s)
     
    		ClientAdapter.add(cli.getNom()+ "  " + cli.getPrenom());
    		ClientAdapter.setNotifyOnChange(true);
     
     
    		}
    		else
    		{
    			Toast.makeText(this, "Ce client n'est pas enregistré dans la base, vérifier l'orthographe ou bien ajouter un nouveau client.", Toast.LENGTH_LONG).show();
    		}
     
    		cliBDD.close();
    	    }  
     
    	        public String toString(){
    			String MonStringClient = null;
    			MonStringClient = cli.getNom() + cli.getPrenom();
    			return MonStringClient;}
     
     
    	        private OnItemClickListener ItemListener = new OnItemClickListener(){
    				public void onItemClick(AdapterView<?> arg0, View arg1,
    						int arg2, long arg3) {
    					//recupération du nom du client
     
     
    					Intent versFidelite = new Intent(getApplicationContext(), FideliteActivity.class);
    	    			//versFidelite.putExtras("nomclient",nomclient);
    	    			startActivity(versFidelite);
     
     
    				}
    				};
     
     
     
    }
    Comment puis je remédier à ça?
    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    La trace dit qu'il y a un nullPointerException à la ligne 29 de la classe AffichageClientActivity.
    Peux-tu nous dire ce qu'il y a à cet endroit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    06-08 16:56:18.933: E/AndroidRuntime(699):  Caused by: java.lang.NullPointerException
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at com.example.cartedefidelite.AffichageClientActivity.onCreate(AffichageClientActivity.java:29)

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    [Boule De Cristal On]
    Je pense que l'intent n'a pas de bundle attaché...
    Du coup objetbundle est null, et objetbundle.getString("nomclient"); foire alors avec un NPE.
    (à noter qu'un getIntent().getStringExtra("nomclient") marcherait lui).
    [Boule De Cristal Off]

    En tout cas, c'est ligne 29 comme déjà dit !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Tout d'abord, merci pour vos réponses

    Alors à la ligne 29, il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String nomduclient=objetbundle.getString("nomclient");
    Donc, à la ligne que tu pensais nicroman, si j'ai bien compris, je dois remplacer ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Bundle objetbundle= this.getIntent().getExtras();
    		String nomduclient=objetbundle.getString("nomclient");
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bundle objetbundle= this.getIntent().getStringExtra("nomclient");
    , c'est ça?

    Mais, je ne comprends pas, puisque ça fonctionne quand je fais ma recherche avec la valeur de l'EditText que j'ai récupéré mais c'est quand je souhaite aller dans l'autre activité (plus bas dans le code) que dans l'Emulateur ça bug.. Or, je n'utilise pas cette valeur..

  5. #5
    Membre éclairé
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 174
    Points : 661
    Points
    661
    Par défaut
    Un truc tout bête mais, as tu correctement déclaré ton activité "FideliteActivity" dans ton manifest.xml ?

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Oui, je l'ai bien déclaré

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Rien à voir avec la déclaration... c'est un NPE !!!

    Mais tu n'as pas collé tout le code...

    On parle de FideliteActivity.java
    Qui d'après le log:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at com.example.cartedefidelite.AffichageClientActivity.onCreate(AffichageClientActivity.java:29)
    06-08 16:56:18.933: E/AndroidRuntime(699): 	at com.example.cartedefidelite.FideliteActivity.onCreate(FideliteActivity.java:7)
    semble hériter de AffichageClientActivity.java

    Et d'ailleurs semble faire un super.onCreate(...); à la ligne 7...


    et comme dans le code d'appel (Intent construction) on ne met aucun extra (la ligne est en commentaires), il n'y a pas de bundle !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Intent versFidelite = new Intent(getApplicationContext(), FideliteActivity.class);
    //versFidelite.putExtras("nomclient",nomclient);
    startActivity(versFidelite);
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    ah d'accord, c'est pour ça!
    La page Fidelité est en construction, j'ai pas encore tout codé, merci j'vous en redis des nouvelles.

    Mais, je voulais savoir, on peut passer deux fois la même valeur d'un EditText dans le GetExtra()?

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Mais le soucis que j'ai, c'est qu'il me faut la variable nomclient que je récupère avec l'intent dans le OnCreate(), seulement, il faudrait que je la passe en variable globale pour l'utiliser dans mon OnItemClickListener, mais si je la récupère pas dans le OnCreate, ça plante..

    Avez vous une solution?

    Je reposte le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    public class AffichageClientActivity extends MainActivity 
    														  /*implements
    														 OnItemClickListener*/
    														 {
    	clientBDD cliBDD = new clientBDD(this);
    	ListView clientListe;
    	client cli = new client("", "", "", "", "", "", "", 0, 0);
    	private ArrayAdapter<String> ClientAdapter = null;
     
    	protected void onCreate(Bundle saveInstanceBundle) {
    		super.onCreate(saveInstanceBundle);
    		setContentView(R.layout.listingclient);
    		clientListe = (ListView) findViewById(R.id.list);
     
    		// à faire passer en globale pour récupérer dans fidelité
    		// récupération de la valeur de l'EditText
    		Bundle objetbundle = this.getIntent().getExtras();
    		String nomduclient = objetbundle.getString("nomclient");
     
    		clientListe = (ListView) findViewById(R.id.list);
    		clientListe.setOnItemClickListener(ItemListener);
    		ClientAdapter = new ArrayAdapter<String>(this,
    				android.R.layout.simple_list_item_1);
    		clientListe.setAdapter(ClientAdapter);
    		cliBDD.open();
    		cli = cliBDD.getClientwithNom(nomduclient);
    		if (cli != null) {
    			// affichage du ou des client(s)
     
    			ClientAdapter.add(cli.getNom() + "  " + cli.getPrenom());
    			ClientAdapter.setNotifyOnChange(true);
     
    		} else {
    			Toast.makeText(
    					this,
    					"Ce client n'est pas enregistré dans la base, vérifier l'orthographe ou bien ajouter un nouveau client.",
    					Toast.LENGTH_LONG).show();
    		}
     
    		cliBDD.close();
    	}
     
    	public String toString() {
    		String MonStringClient = null;
    		MonStringClient = cli.getNom() + cli.getPrenom();
    		return MonStringClient;
    	}
     
    	private OnItemClickListener ItemListener = new OnItemClickListener() {
    		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    				long arg3) {
    			// recupération du nom du client
     
    			Intent versFidelite = new Intent(getApplicationContext(),
    					FideliteActivity.class);
    			//versFidelite.putExtras("nomclient",nomclient);
    			startActivity(versFidelite);
     
    		}
    	};
     
    }

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    J'ai finalement trouvé, c'était simple, fallait déclarer la variable en globale et effectuer la récupération de la valeur de l'EditText dans le OnCreate(), mais là première fois que j'ai essayé ça, j'avais du rouge partout, finalement j'ai rééssayé exactement la même chose et ça fonctionne, bug d'Eclipse je pense..
    Enfin, ça fonctionne maintenant
    Même le passage à l'activité Fidelité!!
    Merci à tous!
    Maintenant je vais essayer de finaliser ma petite application

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passage d'une arraylist d'une activité à une autre
    Par lupus83 dans le forum Android
    Réponses: 2
    Dernier message: 31/03/2011, 12h41
  2. Réponses: 2
    Dernier message: 18/03/2010, 14h31
  3. Réponses: 2
    Dernier message: 30/03/2007, 14h17
  4. Réponses: 6
    Dernier message: 29/09/2006, 11h18
  5. Réponses: 1
    Dernier message: 28/06/2006, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo