1

, когда я пытаюсь поставить маркер на карте Google Map с методом placeMarker я получаю NullPointerExceptionNullPointerException при попытке поместить маркер на Google Map V2

NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference` 
I/DpmTcmClient: RegisterTcmMonitor from: org.apache.http.impl.conn.TcmIdleTimerMonitor 
W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found. 
I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:2 
I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 2 
D/GoogleCertificates: com.google.android.gms.googlecertificates module is loaded 
E/url: http://maps.googleapis.com/maps/api/geocode/json?latlng=35.7742618,51.3596331&sensor=true 
E/Lat Long to Addresss: 
E/Googlemap: null 
D/GoogleCertificatesImpl: Fetched 363 Google certificates 
I/b: Sending API token request. 
E/b: Authentication failed on the server. 
E/Google Maps Android API: Authorization failure 
Ensure that the "Google Maps Android API v2" is enabled. 
                       Ensure that the following Android Key exists: 

Также я использовал getAsyncMap и OnMapReady(). Внутри OnMapReady я запущу Asynktask чтобы получить местоположение пользователя и onPostExecute placeMarker Метод вызывается:

public void placeMarker(LatLongDetails user_latlongobj2, 
final Context contextPlace) { 


try { 
if (googlemap == null) { 
    intialiseMap(); 
    animatecamera(user_latlongobj); 
} 
if (LoginDetails.Address.length() < 1) { 
    LoginDetails.Address = "Getting your location ....."; 
} 
googlemap.clear(); 
marker = new MarkerOptions().position(
     new LatLng(user_latlongobj2.user_latitude, 
       user_latlongobj2.user_longitude)).title(
     LoginDetails.Address); 

System.out.println("This is the Address" + LoginDetails.Address); 

marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)); 


googlemap.addMarker(marker).showInfoWindow(); 
System.out.println("PLACING MARKER" + LoginDetails.Address); 
if (marker == null || contextPlace == null) { 
    Intent in =new Intent(this,ProfileActivity1.class); 
    in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(in); 
} 
else 
fixmarker(marker, contextPlace); 

} catch (Exception e) { 
fixmarker(marker, contextPlace); 
Log.d("Profileactivity", "" + e); 
    } 

} 

Все эти проблемы пришли вместе, когда я попытался изменить GetMap() к getAsyncMap() также пожалуйста, проверьте этот link и полную Всю деятельность на GitHub

я извлекал попытаться поймать, чтобы найти более подробную информацию о error.here является LogCat:

enter code herejava.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference 
                      at android.content.ContextWrapper.getResources(ContextWrapper.java:87) 
                      at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:81) 
                      at android.support.v7.app.AppCompatActivity.getResources(AppCompatActivity.java:551) 
                      at android.content.Context.getString(Context.java:413) 
                      at com.example.cabbookinghome.ProfileActivity1.intialiseMap(ProfileActivity1.java:280) 
                      at com.example.cabbookinghome.ProfileActivity1.placeMarker(ProfileActivity1.java:327) 
                      at epbit.helper.ConversionTaskLatLonLoc.onPostExecute(ConversionTaskLatLonLoc.java:130) 
                      at epbit.helper.ConversionTaskLatLonLoc.onPostExecute(ConversionTaskLatLonLoc.java:24) 
                      at android.os.AsyncTask.finish(AsyncTask.java:651) 
                      at android.os.AsyncTask.access$500(AsyncTask.java:180) 
                      at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
+0

опубликовать полный LogCat. – Raghavendra

+0

Я добавил logcat. –

+0

В logcat вместе с NLP также говорится, что API Android для Android/Android: отказ авторизации Убедитесь, что включен «API Google Maps Android v2». Пожалуйста, зайдите в консоль Google, если она включена, или нет. – Raghavendra

ответ

2

После 3 дней поиска и работы на нем вот что, наконец, worked.the реальная проблема заключается в GoogleMap равна нулю, что означает карта не используется loaded.I попытаться поймать, но вы никогда не должны просто поймать и исключение и сделать ничего. после входа исключения, проверьте журналы, я нашел это:

com.google.android.gms.maps.MapFragment.getMap()' on a null object reference 

Сначала я попробовал эту ссылку Google Map returning nullpointerexception Google Maps Android V2

googleMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)).getMap(); 

Затем getChildFragmentManager стал красным, указывая getChildFragmentManager() не может быть разрешен или не может быть referenced.using getSupportFragmentManager(), как описано в этой ссылке (getChildFragmentManager() cannot be resolved or cannot be referenced) окончательно решена проблема, и карта была загружена

googlemap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapfragment)).getMap(); 

Обратите внимание, что если ваш класс простирается от AppCompatActivity Затем вам нужно использовать getSupportFragmentManager() , потому что getChildFragmentManager() является методом фрагмента не доступен из AppCompatActivity

0

Это потому, что Google Map объект очищается после, если заявление. Удалите googlemap.clear() и попробуйте.

+0

Но он добавляет маркер после googlemap.clear(). –

+0

Попытка, чтобы у меня все еще есть nullPoinetException –

+0

Обновите свой код и ошибку в вопросе. Я попытаюсь понять это. –

0

Ваша карта не инициализирует или не получает вашу позицию. Проверить датчик положения активен или нет. Если нет, пожалуйста, активируйте его. Вы можете попробовать этот код.

private void setUpMapIfNeeded() { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (mMap == null) { 
      // Try to obtain the map from the SupportMapFragment. 
      mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
        .getMap(); 
      // Check if we were successful in obtaining the map. 
      if (mMap != null) { 
       setUpMap(); 
      } 
     } 
    } 

    private void setUpMap() { 
     mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); 
     mMap.setMyLocationEnabled(true); 


    } 
+0

getMap отменен, все эти проблемы возникли, когда мы попытаемся использовать getAsyncMap вместо –

Смежные вопросы