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 :

Plantage à l'ouverture d'une activité secondaire


Sujet :

Android

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Plantage à l'ouverture d'une activité secondaire
    Bonjour à toutes et à tous,

    Dans une application, j'ouvre une activité secondaire en cliquant sur un bouton. Tout ce que j'ai installé a fonctionné. Cela ne fonctionne plus et je n'arrive pas à savoir pourquoi.

    Quand je lance l'activité secondaire, elle s'affiche et 5 secondes plu tard, l'écran devient tout noir et mon application s'arrête.

    Voici ce que j'ai écrit :

    Dans l'activité 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
    	static String MonNom = "N";
    	static String MonPrenom = "P";
    	static String MonAge = "A";
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
                    ...
     
    		ActivSec.setOnClickListener(new View.OnClickListener() {
    		@Override
    			public void onClick(View v) {
    				FctGPS.putExtra(MonNom, "MOI_MEME");
    				FctGPS.putExtra(MonPrenom, "Pierre");
    				FctGPS.putExtra(MonAge, "XX ans");
    				startActivityForResult(FctGPS, 1);
    			}
    		});
     
     
            	@Override
    		protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          		if (resultCode == RESULT_OK) {
             		try {
            	 		Toast.makeText(FCH.context, "Des résultats sont disponibles"+String.format("  %d  ", resultCode)+data.getStringExtra(MonAge),Toast.LENGTH_SHORT).show();
             		} 
             		catch (ParseException ex) { }
          		}  
    	}
    Dans l'activité secondaire :

    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
    public class Fct_GPS extends Activity{
     
    	Button retour;
    	static String MonNom = "N";
    	static String MonPrenom = "P";
    	static String MonAge = "A";
    	TextView leNom;
    	TextView lePrenom;
    	TextView lAge;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fonction_gps);
    		retour = (Button)findViewById(R.id.Retour);
    		final Intent PgPrinc = getIntent();
    		leNom = (TextView)findViewById(R.id.LeNom);
    		lePrenom = (TextView)findViewById(R.id.LePrenom);
    		lAge = (TextView)findViewById(R.id.LAge);
    		if (PgPrinc != null) {
    			lePrenom.setText(PgPrinc.getStringExtra(MonPrenom));
    			leNom.setText(PgPrinc.getStringExtra(MonNom));
    			lAge.setText(PgPrinc.getStringExtra(MonAge));
    		}    
     
            retour.setOnClickListener(new View.OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				PgPrinc.putExtra(MonAge, "YY");
    				setResult(RESULT_OK, PgPrinc);
    				finish();
    			}
    		});
        }
    }
    Dans le fichier Manifest :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.navgps"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk
            android:minSdkVersion="11"
            android:targetSdkVersion="16" />
     
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.navgps.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    		<activity android:name="com.example.Fonctions.Fct_GPS" />
        </application>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />      
     
    </manifest>
    Ai-je supprimé quelque chose entre temps ?

    Si je supprime tous les transfert de données, cela ne va pas mieux. Je ne sais plus par quel bout prendre ce problème.

    Des idées ? Merci de votre aide.

    Pierre

  2. #2
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Voici le fichier log qui montre un plantage, mais je ne sais pas l'exploiter.

    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
    03-11 12:07:18.268: D/dalvikvm(8810): GC_CONCURRENT freed 331K, 5% free 9707K/10119K, paused 7ms+2ms
    03-11 12:07:18.568: D/AndroidRuntime(8810): Shutting down VM
    03-11 12:07:18.568: W/dalvikvm(8810): threadid=1: thread exiting with uncaught exception (group=0x40c611f8)
    03-11 12:07:18.573: E/AndroidRuntime(8810): FATAL EXCEPTION: main
    03-11 12:07:18.573: E/AndroidRuntime(8810): java.lang.RuntimeException: Unable to stop activity {com.example.navgps/com.example.navgps.MainActivity}: java.lang.NullPointerException
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:2817)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.ActivityThread.handleStopActivity(ActivityThread.java:2862)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.ActivityThread.access$900(ActivityThread.java:127)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1175)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.os.Looper.loop(Looper.java:137)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.ActivityThread.main(ActivityThread.java:4511)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at java.lang.reflect.Method.invokeNative(Native Method)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at java.lang.reflect.Method.invoke(Method.java:511)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at dalvik.system.NativeStart.main(Native Method)
    03-11 12:07:18.573: E/AndroidRuntime(8810): Caused by: java.lang.NullPointerException
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at com.example.Fichiers.FCH.ClotEnrg(FCH.java:118)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at com.example.navgps.MainActivity.onStop(MainActivity.java:314)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1177)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.Activity.performStop(Activity.java:4608)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:2814)
    03-11 12:07:18.573: E/AndroidRuntime(8810): 	... 11 more
    Merci de votre aide.

    Pierre

  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
    Fichier FCH.java, ligne 118:
    com.example.Fichiers.FCH.ClotEnrg(FCH.java:118)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Merci nicroman, c'est là qu'est le problème. Comment cela se fait-il ?

    Dans mon application, quand je suis en mode navigation, j'ouvre un fichier de traces que je remplis au fur et à mesure que des informations GPS arrivent. Je peux fermer ce fichier si je quitte le mode navigation, mais je le ferme aussi si je quitte l'application sans avoir quitté le mode navigation. Pour ce faire, j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	@Override
    	protected void onStop() {
    		super.onStop();
    		INIT.prefsGPS.utmEl = GPS.NoEll;
    		...
    		INIT.EnrgPrefs();
    		FCH.ClotEnrg(FchTrace);
     	}
    et dans le package FCH :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	public static void ClotEnrg(BufferedWriter writer) {
     	   try {
     		   writer.close();
     	   }
     	   catch (IOException e) {
     		   e.printStackTrace();
     	   }
    	}
    Je ne pensais pas qu'à l'ouverture d'une activité secondaire, l'activité principale était fermée, je pensais qu'elle était mise en "pause". Il va falloir que je relise le cycle de vie dune application.

    Du coup, lors du retour à l'activité principale, y a-t-il une reprise automatique de là où on en était lors de l'ouverture de l'activité secondaire ou bien faut-il retrouver cet état par un "OnResume" ?

    La fonction ClotFch plantait, car lors de mes tests, je n'étais pas en mode navigation et n'avais pas encore ouvert le fichier de traces.

    Donc, tout cela est bien logique.

    Merci pour le débogage et du coup, j'ai un peu appris à défricher le fichier log.

    Cordialement.

    Pierre

  5. #5
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Merci nicroman, c'est là qu'est le problème. Comment cela se fait-il ?
    Ici tu as l'erreur dans le logcat :
    FATAL EXCEPTION: main
    03-11 12:07:18.573: E/AndroidRuntime(8810): java.lang.RuntimeException: Unable to stop activity {com.example.navgps/com.example.navgps.MainActivity}: java.lang.NullPointerException
    Le FATAL EXCEPTION

    Tu peux voir que c'est un NullPointerException, donc une variable nulle utilisé. depuis quelle activity MainActivity.

    nicroman t'a donné la ligne que tu peux trouver ici depuis ton logcat

    Caused by: java.lang.NullPointerException
    03-11 12:07:18.573: E/AndroidRuntime(8810): at com.example.Fichiers.FCH.ClotEnrg(FCH.java:118)
    Le Caused by

    Ici la ligne posant problème , donc dans le fichier FCH.java à la ligne 118 tu as une variable non initialisé .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/06/2013, 22h37
  2. [AC-2003] Plantage systématique lors de l'ouverture d'une autre BD
    Par marot_r dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/08/2011, 21h47
  3. Réponses: 1
    Dernier message: 31/08/2009, 14h54
  4. Réponses: 0
    Dernier message: 29/05/2009, 10h13
  5. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 11h06

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