1

Я хочу зарегистрировать свое устройство в моем gcm. В моем другом приложении этот код работает нормально. но в этом приложении этот код получает нулевой указатель. это мой кодПолучить нулевой указатель для экземпляра экземпляра GCM

И это исключение исключения из null.

08-05 16:58:19.741 26139-26464/? E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 
    Process: com.fingerspot.fingerspot, PID: 26139 
    java.lang.RuntimeException: An error occured while executing doInBackground() 
      at android.os.AsyncTask$3.done(AsyncTask.java:300) 
      at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
      at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
      at java.lang.Thread.run(Thread.java:841) 
    Caused by: java.lang.NullPointerException 
      at com.google.android.gms.iid.InstanceID.zza(Unknown Source) 
      at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source) 
      at com.fingerspot.fingerspot.Login$2.doInBackground(Login.java:145) 
      at com.fingerspot.fingerspot.Login$2.doInBackground(Login.java:139) 
      at android.os.AsyncTask$2.call(AsyncTask.java:288) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
            at java.lang.Thread.run(Thread.java:841) 

Что случилось с моим кодом? Потому что этот код отлично работает в моем другом приложении, но получает нулевой указатель для этого приложения.

+0

что линия Login.java:145 вы получаете a NPE там –

+0

это, instanceID = InstanceID.getInstance (applicationContext); – huzain07

+0

, но этот код в моем другом приложении – huzain07

ответ

0

Как ваш applicationContext является недействительным. В вашей деятельности лучше инициализировать его внутри onCreate метода, как:

applicationContext = YourActivity.this; 

или попробовать это:

instanceID = InstanceID.getInstance(getApplicationContext()); 

или попробовать это:

instanceID = InstanceID.getInstance(YourActivity.this); 
+0

oh спасибо за пояснение: D – huzain07

+0

@ huzain07 действительно принимаем ответ, если проблема решена :) –

+0

сделано, спасибо: D – huzain07

0

использование getApplicationContext() вместо ApplicationContext

+0

Ох, спасибо, я решил свою проблему. но почему я использую getApplicationContext() вместо Context applicationContext ?? и почему этот код работает в моем другом приложении? но не работает в этом приложении? – huzain07

+0

похоже, что в другом приложении вы создавали экземпляр переменной applicationContext где-то, но не делали этого в этом приложении, вы также можете добавить Context applicationContext = getApplicationContext(); а затем использовать его, как раньше –

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