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 : Null Pointer Exception


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 63
    Points : 42
    Points
    42
    Par défaut Problème : Null Pointer Exception
    Bonjour à tous,

    Je m'en viens ici car j'ai un problème assez urgent que je n'arrive pas à régler.
    Je développe actuellement une appli qui sert à se géolocaliser, jusque la grâce à un tuto j'y suis parvenue facilement. Ensuite j'ai voulu rajouter un fragment à gauche de ma fenêtre principale.
    Au moment de compiler, j'ai le message d'erreur me disant :
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.explorer/com.example.explorer.MainActivity}: java.lang.NullPointerException
    Et je n'arrive pas à trouver d'où peut venir cette erreur .

    Voici le LogCat complet :

    08-31 23:33:51.895: E/AndroidRuntime(3665): FATAL EXCEPTION: main
    08-31 23:33:51.895: E/AndroidRuntime(3665): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.explorer/com.example.explorer.MainActivity}: java.lang.NullPointerException
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.ActivityThread.access$700(ActivityThread.java:159)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.os.Handler.dispatchMessage(Handler.java:99)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.os.Looper.loop(Looper.java:176)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.ActivityThread.main(ActivityThread.java:5419)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at java.lang.reflect.Method.invokeNative(Native Method)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at java.lang.reflect.Method.invoke(Method.java:525)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at dalvik.system.NativeStart.main(Native Method)
    08-31 23:33:51.895: E/AndroidRuntime(3665): Caused by: java.lang.NullPointerException
    08-31 23:33:51.895: E/AndroidRuntime(3665): at com.example.explorer.MainActivity.onCreate(MainActivity.java:63)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.Activity.performCreate(Activity.java:5372)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
    08-31 23:33:51.895: E/AndroidRuntime(3665): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
    08-31 23:33:51.895: E/AndroidRuntime(3665): ... 11 more
    Et voici mon code java :

    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    package com.example.explorer;
     
    import java.util.List;
    import java.util.Vector;
     
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapFragment;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.Marker;
    import com.google.android.gms.maps.model.MarkerOptions;
     
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.View;
    import android.widget.Toast;
     
    public class MainActivity extends FragmentActivity implements LocationListener{
     
    	private PagerAdapter mPagerAdapter;
    	private LocationManager locationManager;
    	private GoogleMap gMap;
    	private Marker marker;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		super.setContentView(R.layout.viewpager);
     
    		List<Fragment> fragments = new Vector<Fragment>();
     
    				fragments.add(Fragment.instantiate(this,PageGaucheFragment.class.getName()));
     
     
    		this.mPagerAdapter = new MyPageAdapter(super.getSupportFragmentManager(), fragments) {
     
    			@Override
    			public boolean isViewFromObject(View arg0, Object arg1) {
    				return false;
    			}
     
    			@Override
    			public int getCount() {
    				return 0;
    			}
    		};
     
    		ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
    		pager.setAdapter(this.mPagerAdapter);
     
    		gMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
    		marker = gMap.addMarker(new MarkerOptions().title("Vous êtes ici").position(new LatLng(0, 0)));
    	}
     
    	@Override
    	public void onResume() {
    	    super.onResume();
     
    	    locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
    	    if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    	        abonnementGPS();
    	    }
    	}
     
    	@Override
    	public void onPause() {
    	    super.onPause();
     
    	    desabonnementGPS();
    	}
     
    	public void abonnementGPS() {
    	    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, this);
    	}
     
    	public void desabonnementGPS() {
    	    locationManager.removeUpdates(this);
    	}
     
    	@Override
    	public void onLocationChanged(final Location location) {
    	    final StringBuilder msg = new StringBuilder("lat : ");
    	    msg.append(location.getLatitude());
    	    msg.append( "; lng : ");
    	    msg.append(location.getLongitude());
     
    	    Toast.makeText(this, msg.toString(), Toast.LENGTH_SHORT).show();  
     
    	    gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 15));
    	    marker.setPosition(new LatLng(location.getLatitude(), location.getLongitude()));
    	}
     
    	@Override
    	public void onProviderDisabled(final String provider) {
    	    if("gps".equals(provider)) {
    	        desabonnementGPS();
    	    }        
    	}
     
    	@Override
    	public void onProviderEnabled(final String provider) {
    	    if("gps".equals(provider)) {
    	        abonnementGPS();
    	    }
    	}
     
    	@Override
    	public void onStatusChanged(String provider, int status, Bundle extras) {
     
    	}
    }
    J’espère que vous saurez m'aider .

    Merci d'avance.

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 63
    Points : 42
    Points
    42
    Par défaut
    Personne pour m'aider ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    Bonjour,

    Je ne suis pas un pro d'android, donc je ne vais te dire grand chose au risque de dire des conneries, mais a priori, l'erreur vient de la ligne 63.
    08-31 23:33:51.895: E/AndroidRuntime(3665): Caused by: java.lang.NullPointerException
    08-31 23:33:51.895: E/AndroidRuntime(3665): at com.example.explorer.MainActivity.onCreate(MainActivity.java:63)
    Et d'après une rapide recherche sur le net, il se pourrait que tu passes une condition avec un locationManager null.

    Change ta condition en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(locationManager != null && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    	        abonnementGPS();
    	    }

  4. #4
    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
    Salut !

    Pour info le mot clef "super." n'est en général utilisé *que* pour appeler la fonction que l'on est en train de surcharger....

    super.setContentView(); par exemple est très dangereux. Si tu override la fonction, tu ne comprendras pas pourquoi ta version n'est pas appelée


    Ensuite:
    On n'utilise quasiment jamais la classe "Vector". Cette classe est réservée pour un accès concurrent, ce qui n'est pas le cas ici... Lui préférer "ArrayList".



    Ensuite, l'erreur est explicite:
    On utilise (appel de fonction sur...) une référence null à la ligne 63 de MainActivity.java

    Hélas, le code que tu as collé ne correspond pas (ligne 63 = super.xxxxx(); )

    Perso je penche plus pour cette zone du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
    marker = gMap.addMarker(new MarkerOptions().title("Vous êtes ici").position(new LatLng(0, 0)));
    1. Rien ne dit qu'il y a un fragment R.id.map (et donc NPE sur l'appel de getMap() )
    2. Rien ne dit surtout, que le fragment en question a eu le temps de créer la map (gMap null, du coup, gMap.addMarker => NPE).

Discussions similaires

  1. Problème Null Pointer Exception
    Par bitter00 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 18/08/2011, 13h04
  2. Réponses: 1
    Dernier message: 12/12/2008, 08h57
  3. problème jcombobox null pointer exception
    Par farid754 dans le forum Composants
    Réponses: 4
    Dernier message: 13/01/2008, 22h47
  4. [JMS] problème de Null Pointer Exception
    Par fafoula dans le forum Glassfish et Payara
    Réponses: 14
    Dernier message: 28/09/2007, 15h32
  5. Null Pointer Exception
    Par snouppy dans le forum JBuilder
    Réponses: 3
    Dernier message: 13/06/2006, 21h53

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