2017-08-07 2 views
-1

Désolé pour la question répétée mais je ne peux pas obtenir la solution des questions précédentes. Je veux cartographier GPS (Latitude, Longitude) de mysql sur google map. Je reçois lat et long de mysql mais quand je tente de le mapper sur google map, mon application se bloque. J'ai beaucoup essayé mais ça ne marche pas. Elle retournel'application se bloque lorsque vous essayez d'appeler la méthode getMapAsync()

objet null référence

erreur

dans logcat. Il n'est pas probable que la référence d'objet null précédente.

Ma classe RecGPS Le code est ici.

public class RecGPS extends AppCompatActivity{ 
private GoogleMap mMap; 


    Button btn; 
    private ProgressDialog loading; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_rec_gps); 


     btn = (Button) findViewById(R.id.btn); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       recGps(); 
      } 
     }); 
    } 

    private void recGps() { 


     loading = ProgressDialog.show(this, "Please wait ......", "fetching....", false, false); 
     String url = Config.URL_CARD_INFO; 
     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 

     }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(RecGPS.this, error.getMessage().toString(), Toast.LENGTH_LONG).show(); 
        } 
       }); 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    } 

    private void showJSON(String response) { 
     String latitude = ""; 
     String longitude = ""; 


     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY); 
      JSONObject collegeData = result.getJSONObject(0); 
      latitude = collegeData.getString(Config.TAG_ISSUE_DATE); 
      longitude = collegeData.getString(Config.TAG_Expiry_DATE); 



     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

Toast.makeText(this,latitude+longitude,Toast.LENGTH_LONG).show(); 
//  ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(this); 


     ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap googleMap) { 
       mMap=googleMap; 
      } 
     }); 
    mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longitude), Double.parseDouble(latitude)))); 



} 

} 

mon .XML fichier

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_rec_gps" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.hp.getgpscoordinates.RecGPS"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="400dp"> 
     <fragment 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/map" 
      android:clickable="true" 
      android:name="com.google.android.gms.maps.SupportMapFragment" 
      /> 
    </LinearLayout> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/btn"/> 
</LinearLayout> 

Logcat

Attempt to invoke virtual method 'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' on a null object reference 
    at com.example.hp.getgpscoordinates.RecGPS.showJSON(RecGPS.java:92) 
    at com.example.hp.getgpscoordinates.RecGPS.access$200(RecGPS.java:25) 
    at com.example.hp.getgpscoordinates.RecGPS$2.onResponse(RecGPS.java:56) 
    at com.example.hp.getgpscoordinates.RecGPS$2.onResponse(RecGPS.java:52) 
    at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
    at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
    at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:7325) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+0

ajouter votre rapport logcat s'il vous plaît –

+0

Ajouter Crashlog à la question – USKMobility

+0

Où est votre méthode 'onMapReady()', et les autres méthodes de cycle de vie Google Map? Aucune infraction, mais ce code a une odeur. Mon conseil: ajoutez des points d'arrêt et localisez exactement l'endroit où le code plante. –

Répondre

0

Le NullPointerException est causée par ceci:

((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 

Essayez d'utiliser SupportMapFragment au lieu de getFragmentManager:

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

@Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longitude), Double.parseDouble(latitude)))); 
    } 
+0

il fonctionne mais maintenant le problème est dans addMarker.Plz guide comment peut le résoudre ... 'mMap.addMarker (nouveau MarkerOptions(). Position (nouveau LatLng (Double.parseDouble (longitude), Double.parseDouble (latitude)))); ' –

+0

mettre à jour ma réponse vérifier le –

+0

Merci beaucoup, il travaille .......... –

0

Ajouter marqueur une fois la carte est prêt comme dans

((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap googleMap) { 
       mMap=googleMap; 
       mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longitude), Double.parseDouble(latitude)))); 
      } 
     });