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 de nullpointerexception


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Par défaut Problème de nullpointerexception
    Bonjour, voila j'ai une base de donnée et je souhaite rentrer les données de mon formulaire xml dedans mais au moment d'envoyer il me mes un nullpointerexception sur mon onclick, malgré sa je n'arrive pas a résoudre mon problème est ce que quelqu'un aurais une idée ? merci d'avance

    voici mon rapport d'erreur logcat:

    06-03 17:10:32.344: ERROR/AndroidRuntime(229): Uncaught handler: thread main exiting due to uncaught exception
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): java.lang.NullPointerException
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at com.google.android.bibax.bibax$1.onClick(bibax.java:52)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.View.performClick(View.java:2364)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.View.onTouchEvent(View.java:4179)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.widget.TextView.onTouchEvent(TextView.java:6541)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.View.dispatchTouchEvent(View.java:3709)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.os.Handler.dispatchMessage(Handler.java:99)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.os.Looper.loop(Looper.java:123)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at android.app.ActivityThread.main(ActivityThread.java:4363)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at java.lang.reflect.Method.invokeNative(Native Method)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at java.lang.reflect.Method.invoke(Method.java:521)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at dalvik.system.NativeStart.main(Native Method)

    --------------------------------------------------------------------------

    ma base de donnée:

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    package com.google.android.bibax;
     
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.content.ContentValues;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
     
    public class BDAcces {
    //  variable  bdd
    	private static final String CHICHA_TABLE = "chicha";
     
     
    	private static final String DATABASE_NAME = "chicha_android";
     
    	private static final int DATABASE_VERSION = 1;
     
    	//requete creation bdd
    	private static final String CREATE_CHICHA_TABLE ="CREATE TABLE chicha ("
    	+"nom_chicha TEXT NO NULL,"
    	+"numero_chicha INTEGER(10) NOT NULL,"
    	+"codepostal_chicha INTEGER (5) NOT NULL,"
    	+"ville_chicha TEXT (50) NOT NULL,"
    	+"adresse_chicha VARCHAR(500) NOT NULL,"
    	+"prix_chicha  VARCHAR(10000) NOT NULL,"
    	+"description_chicha LONGTEXT NOT NULL,"
    	+")";
     
     
     
     
    	//je rajoute également trois attributs
    	private final Context mCtx; 
    	//contient les information sur l'environnement de mon application
    	//class permettant de manager la creation,et la mise à jur de notre base
    	public BDAcces(Context ctx) {
     
    			 this.mCtx = ctx;
    		 }
    	private DatabaseHelper mDbHelper;
    	//class d'action sur notre base
    	private SQLiteDatabase mDb;
    	private static final String TAG = "BDAcces";
    	//J'ai vais maintenant créer ma classe DatabaseHelper qui est une extension de <a href="http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html">SQLiteOpenHelper</a>
    	private static class DatabaseHelper extends SQLiteOpenHelper {
     
    	DatabaseHelper(Context context) {
    	super(context, DATABASE_NAME, null, DATABASE_VERSION);//ouverture ou creation de la base si elle n'existe pas
    	}
     
    	@Override
    	// methode qui est appelé quand on ouvre la base pour la première fois
    	public void onCreate(SQLiteDatabase db) {
    	db.execSQL(CREATE_CHICHA_TABLE);
     
    	}
     
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//methode permettant une mise à jour de notre base de donnée
    	Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
    	+ newVersion + ", which will destroy all old data");
     
    	db.execSQL("DROP TABLE IF EXISTS "+CHICHA_TABLE);
     
    	onCreate(db);
    	}
    	}
     
     
    	public void open() throws SQLException          //ouvre l'acces à la base de donnée
    	{
    	mDbHelper = new DatabaseHelper(mCtx);
    	mDb = mDbHelper.getWritableDatabase();
     
     
    	}
     
    	public void close()                            //ferme l'accès à la base de donnée
    	{
    	mDbHelper.close();
    	}
     
    	public long insertchicha(String sNomChicha, String sNumeroChicha, String sCodePostalChicha, String sVilleChicha, String sAdresseChicha, String sPrixChicha, String sDescriptionChicha )        //insere un nouveau contenu
    	{
    	ContentValues initialValues = new ContentValues();
    	initialValues.put("nom_chicha", sNomChicha);
    	initialValues.put("numero_chicha", sNumeroChicha);
    	initialValues.put("codepostal_chicha", sCodePostalChicha);
    	initialValues.put("ville_chicha", sVilleChicha );
    	initialValues.put("adresse_chicha", sAdresseChicha );
    	initialValues.put("prix_chicha", sPrixChicha );
    	initialValues.put("description_chicha", sDescriptionChicha );
     
    	return mDb.insert(CHICHA_TABLE, null, initialValues);
    	}
     
     
     
     
     
    }
    --------------------------------------------------------------------------

    ma classe principale :


    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
    63
    64
    65
       public boolean onOptionsItemSelected(MenuItem item) {
        	switch (item.getItemId()) {
        	case R.id.item01:
        	//int i = 1;
        	this.setContentView(R.layout.consultationbase);
        	return true;
     
        	case R.id.item02:
            	//int j = 1;
            	this.setContentView(R.layout.enregistrementbase);
     
            	    Button buttonenvoyertable = (Button) findViewById(R.id.button_envoyertable);
     
     
            		final TextView nomchicha = (TextView) findViewById(R.id.edit_nom);
            		final TextView numerochicha = (TextView) findViewById(R.id.edit_numero);
            		final TextView codepostalchicha = (TextView) findViewById(R.id.edit_codepostal);
            		final TextView villechicha = (TextView) findViewById(R.id.edit_ville);
            		final TextView adressechicha = (TextView) findViewById(R.id.edit_adresse);
            		final TextView prixchicha = (TextView) findViewById(R.id.edit_prix);
            		final TextView descriptionchicha = (TextView) findViewById(R.id.edit_description);
     
     
            		buttonenvoyertable.setOnClickListener(new Button.OnClickListener() {
     
            			public void onClick(View v) {
            			objBd.open();//connexion à  ma base de donnée
            			String sNomChicha = nomchicha.getText().toString();//récupération du nom 
            			String sNumeroChicha = numerochicha.getText().toString();
            			String sCodePostalChicha = codepostalchicha.getText().toString();
            		    String sVilleChicha = villechicha.getText().toString();
            		    String sAdresseChicha = adressechicha.getText().toString();
            		    String sPrixChicha = prixchicha.getText().toString();
            		    String sDescriptionChicha = descriptionchicha.getText().toString();
     
     
     
            			long bresult = objBd.insertchicha(sNomChicha, sNumeroChicha,sCodePostalChicha, sVilleChicha, sAdresseChicha, sPrixChicha, sDescriptionChicha);//enregistrement dans ma base de données
            			String resultsring = new Long(bresult).toString() ;//conversion du résultat en Type String pour pouvoir l'affiché
            			nomchicha.setText(resultsring);//affichage du résultat de notre requete dans le champ contenu de la recette
            			numerochicha.setText(resultsring);
            			codepostalchicha.setText(resultsring);
            			villechicha.setText(resultsring);
            			adressechicha.setText(resultsring);
            			prixchicha.setText(resultsring);
            			descriptionchicha.setText(resultsring);
     
            			objBd.close();//fermeture de ma base de données
     
            			;}
     
            		});
     
            		return true;
     
        	case R.id.item03:
            	//int i = 1;
            	this.setContentView(R.layout.jeux);
            	return true;
        	}
             return false;
    }
     
     
    }
    --------------------------------------------------------------------------

    ps : les edit_xxxx sont les edittext de mon xml




    merci d'avance de votre aide
    cordialement

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Par défaut
    La ligne d'où vient l'erreur est mentionnée ici (52 de la classe bibax.java)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    06-03 17:10:32.374: ERROR/AndroidRuntime(229): at com.google.android.bibax.bibax$1.onClick(bibax.java:52)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Par défaut
    justement je ne comprend pas, le nullpointerexception dans ce cas la indique que j'ai fait un null.toString() ? hors mon nomchicha.getText().toString(); ligne 54 n'est pas vide, il contient mon edit text edit_nom.

    je ne voit vreaiment pas pourquoi il me mais un nullpointer a la ligne 52

    ps: merci de ton aide

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    justement je ne comprend pas, le nullpointerexception dans ce cas la indique que j'ai fait un null.toString() ? hors mon nomchicha.getText().toString(); ligne 54 n'est pas vide, il contient mon edit text edit_nom.
    La stacktrace ne ment jamais
    Si la ligne 54 correspond à l'instruction nomchicha.getText().toString(), il n'y a pas 30 possibilités : soit nomchicha est null, soit la méthode nomchicha.getText() renvoie null car l'affectation plus haut a échoué (et je ne peux pas imaginer comment vu que tu n'as pas montrer cette méthode).

    Affiche sur ta console, ces 2 valeurs avant l'exécution de la méthode qui échoue et tu verras bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println(nomchicha);
    System.out.println(nomchicha.getText());
    nomchicha.getText().toString();

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Par défaut
    tout d'abord merci de ta réponse mais je ne vois pas ce que tu veut dire par affectation ? mon nomchicha est lier a l'edit text de mon xml qui s'appel edit_nom et il apparait bien dans mon script :

    final TextView nomchicha = (TextView) findViewById(R.id.edit_nom);

    de quel méthode parle tu ?

    désolé si c'est tout bête mais je débute un peu

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Je te parle de l'appel à méthode findViewById(...) avec la param R.id.edit_nom.
    C'est elle qui te renvoie le fameux nomchicha qui génère un nullpointer.

Discussions similaires

  1. Problème de NullPointerException
    Par mouss4rs dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/01/2012, 15h07
  2. Problème de NullPointerException dans mon Game loop
    Par F3nr1r dans le forum NetBeans
    Réponses: 5
    Dernier message: 07/11/2011, 22h00
  3. Réponses: 3
    Dernier message: 30/07/2011, 13h37
  4. Problème de NullPointerException
    Par Arkot dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2008, 20h09
  5. Réponses: 3
    Dernier message: 10/06/2008, 18h58

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