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 :

Crash lors du changement de fenêtre


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Par défaut Crash lors du changement de fenêtre
    Bonjour à tous,

    Je suis entrain de créer une petite application Android permettant de lire les coordonnés de point précis à partir d'un fichier.

    Je m'explique :
    J'ai créer une petite application en C++ (dont j'avais demandé de l'aide) dans laquelle on inscrit les coordonnées de chaque point (Latitude, Longitude, nom) et qui crée un fichier contenant toutes ces informations avec comme séparateur un ";" .

    Mon application android doit être capable de lire le fichier puis d'afficher le nom du point passé dernièrement et le nom du prochain point.

    Mais lorsque je souhaites cliquer sur "Demarrer Parcours" , l'application crash et eclipse me donne comme erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    05-15 09:18:07.668: W/dalvikvm(276): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    05-15 09:18:07.708: E/AndroidRuntime(276): FATAL EXCEPTION: main
    05-15 09:18:07.708: E/AndroidRuntime(276): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cpg.Aurel/com.cpg.Aurel.ParcoursActivity}: java.lang.NullPointerException
    05-15 09:18:07.708: E/AndroidRuntime(276): Caused by: java.lang.NullPointerException
    ParcoursActivity :
    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
    package com.cpg.Aurel;
     
    import java.io.*;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.Button;
    import android.widget.EditText;
     
    public class ParcoursActivity extends Activity {
    	private String Filename;
    	private parcours parcours;
    	private EditText Nom;
    	private EditText NbPoints;
    	public void onCreate(Bundle savedInstanceState){
    		  super.onCreate(savedInstanceState);
    	      parcours=new parcours();  
    	        Intent intent= new Intent(this, C_Points.class);
    	        intent.getExtras();
    	        startActivity(intent);
    	        Filename = intent.getExtras().getString("Filename");
    	        //LectureFile(Filename);
    	        setContentView(R.layout.main2);
    	        Nom = (EditText)findViewById(R.id.editText1);
    	        NbPoints = (EditText)findViewById(R.id.editText2);
    	        Nom.setText(parcours.NomParcours);
    	        NbPoints.setText(parcours.NbPoints);
     
     
     
    }
    	  public void LectureFile(String Filename)
    	  {
    		  try{
    			  String Line="";
    			  String[] Tab;
    			  String Filepath = "sdcard/CPG/"+Filename;
    			  Tab = new String [3];
    			  BufferedReader Buffer = new BufferedReader(new FileReader(Filepath));
    			  Line=Buffer.readLine();
    			  Tab=Line.split(";");
    			  parcours.NomParcours=Tab[0];
    			  parcours.NbPoints=Integer.parseInt(Tab[1]);
    			  for(int a = 0; a<parcours.NbPoints; a++)
    			  {
    				  Line=Buffer.readLine();
    				  Tab=Line.split(";");
    				  parcours.Points[a] = new C_Points();
    				  parcours.Points[a].NomP = Tab[0];
    				  parcours.Points[a].Latitude=Double.parseDouble(Tab[1]);
    				  parcours.Points[a].Longitude=Double.parseDouble(Tab[2]);
    			  }
    			  Buffer.close();
     
     
    		  }catch (Exception e){
     
    		  }
    	  }
    }
    Etant très débutant en Java et Android, j'ai besoin de votre aide afin de pouvoir résoudre cette erreur.

    Je vous en remercie d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Par défaut
    Je ne comprends pas vraiment ce que tu souhaite faire aux lignes 2 et 4 (20 et 22 dans ton code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	        Intent intent= new Intent(this, C_Points.class);
    	        intent.getExtras();
    	        startActivity(intent);
    	        Filename = intent.getExtras().getString("Filename");
    Si tu essaye de récupérer une information de ton activité "C_Points" via les getExtras, tu t'y prends mal.

    Pour lancer l'activty, tu as besoin uniquement des lignes 1 et 3 (en utilisant la méthode startActivityForResult).
    Ensuite, si tu veux récupérer des infos que tu transmet de C_Points (ça pourrait d'ailleurs être utile de voir son code), il faut que tu redéfinisse la méthode onActivityResult.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data)
    	{
    		data.getExtras().getString("Filename");
                    ...
    	}

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Par défaut
    Pour le moment C_Points contient seulement 3 déclarations de variables donc il n'est pas utile.
    Mais je ne comprend pas alors comment récupérer les bonnes informations.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Par défaut
    Ta classe C_Points n'est pas une activité, ça n'a donc pas de sens d'instancier un Intent avec cette classe, et de récupérer des extras. Supprime donc ces 4 lignes que j'ai cité avant.

    Du coup, je ne vois pas vraiment où sont tes informations pour obtenir le nom de fichier par exemple ? Où est-ce que l'on peut trouver ce nom de fichier ? LectureFile ne pourra pas marcher sans nom de fichier déjà, ça c'est sûr ^^

    Et donne le code de ta classe C_Points

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Par défaut
    Voici le contenu de C_Points :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    package com.cpg.Aurel;
     
    public class C_Points {
     
    	public String NomP;
    	public double Latitude;
    	public double Longitude;
     
     
    }
    La classe est surement incomplète.

    Les informations que doit afficher la fenêtre se trouvent dans un fichiers que je peux choisir au départ.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Par défaut
    Citation Envoyé par Catskan Voir le message
    Voici le contenu de C_Points :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    package com.cpg.Aurel;
     
    public class C_Points {
     
    	public String NomP;
    	public double Latitude;
    	public double Longitude;
     
     
    }
    La classe est surement incomplète.

    Les informations que doit afficher la fenêtre se trouvent dans un fichiers que je peux choisir au départ.

    Alors oui, ta classe est incomplète car il manque un constructeur, et éventuellement des "setters" et "getters" pour tes trois attributs.
    La ligne 49 (ci-dessous) n'a par exemple aucun sens pour l'instant. D'ailleurs, tes bouts de code avec la classe "parcours" ne sont pas très correct. Je ne sais pas à quoi ressemble ta classe "parcours" (qui devrait commencer par une majuscule selon la convention Java), mais là c'est un problème Java (il faut que tu révise un peu tes bases pour le coup). Et il faut aussi que tu fasse les getters/setters pour cette classe parcours (avec attributs privés, pour ne pas faire ça ^^).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    parcours.Points[a] = new C_Points();
    parcours.Points[a].NomP = Tab[0];
    parcours.Points[a].Latitude=Double.parseDouble(Tab[1]);
    parcours.Points[a].Longitude=Double.parseDouble(Tab[2]);

    Ça, c'est pour le côté Java et bases.



    Pour ce qui est de ton problème avec le fichier, tu dis "que je peux le choisir au départ", mais il n'arrive jamais dans l'activity. Alors soit tu le fixe à la main, soit si c'est l'utilisateur qui choisit, il faut faire une liste déroulante pour sélectionner le fichier qu'on souhaite ouvrir.

    Tu pourrais commencer par tester en fixant manuellement (en mettant bien le fichier au bon endroit aussi) :
    private String filename = "nomDeTonFichier";

Discussions similaires

  1. Problème du module login lors du changement de mot de passe
    Par MIC94 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 31/08/2006, 11h51
  2. perte de dessin lors du rafraichissement de fenètre
    Par tawsi dans le forum Graphisme
    Réponses: 1
    Dernier message: 04/06/2006, 07h38
  3. Réponses: 1
    Dernier message: 22/05/2006, 09h10
  4. setting ignorés lors du changement de lnf
    Par komando dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/02/2006, 09h01
  5. Réponses: 9
    Dernier message: 16/01/2006, 14h16

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