2017-05-29 3 views
0

Ich habe ein Problem mit der Behandlung von NullPointer Ausnahme von remoteMessage.Firebase remoteMessage getData ordnungsgemäße NullPointer Handhabung

Ich habe versucht, einfache Prüfung zu tun:

Map<String, String> data = remoteMessage.getData(); 

if(data != null) { 
     Log.d(TAG, remoteMessage.getData().get("lat")); 
     Log.d(TAG, remoteMessage.getData().get("lng")); 
    } 

Ich habe auch versucht härter:

if(remoteMessage.getData().get("lat") != null) { 
     Log.d(TAG, remoteMessage.getData().get("lat")); 
    } 

Aber es stürzt immer mit Nullpointer:

05-29 10:22:33.112 21028-24256/com.coderspeak.smog_app E/AndroidRuntime: FATAL EXCEPTION: pool-12-thread-1 
                    Process: com.coderspeak.smog_app, PID: 21028 
                    java.lang.NullPointerException: println needs a message 
                     at android.util.Log.println_native(Native Method) 
                     at android.util.Log.d(Log.java:139) 
                     at com.coderspeak.smog_app.services.fcm.AppFirebaseMessagingService.onMessageReceived(AppFirebaseMessagingService.java:50) 
                     at com.google.firebase.messaging.FirebaseMessagingService.zzl(Unknown Source) 
                     at com.google.firebase.messaging.FirebaseMessagingService.zzJ(Unknown Source) 
                     at com.google.firebase.messaging.FirebaseMessagingService.handleIntent(Unknown Source) 
                     at com.google.firebase.iid.zzb$1.run(Unknown Source) 
                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 

Wie kann ich tun die richtige Prüfung dafür?

+0

Log.d (TAG, remoteMessage.getData(). Get ("lat") + ""); –

+0

Können Sie versuchen, die gesamten Daten zu drucken? Log.d (TAG, "Nachrichtendaten payload:" + remoteMessage.getData()); ' –

Antwort

0

Haben Sie diesen Weg versucht?

if (remoteMessage != null && 
    remoteMessage.getData() != null) { 
    String yourMessage = remoteMessage.getData().get("lat")); 

    if (yourMessage != null) { 
     Log.d(TAG, yourMessage); 
    } 
} 
+0

remoteMessage.getData(). Get (" lat ") gibt immer einen Absturz – Konrad

+0

Der von getData zurückgegebene Typ () Methodenaufruf ist eine Map-Instanz oder ist ein benutzerdefinierter Typ? Vielleicht tritt die NPE in der Methode get() auf. –