2012-05-03 1 views
0
public void newNotification(CharSequence message) { 

    prefs = new AppPreferences(getApplicationContext()); 

    Intent i = new Intent(GameNotification.this, ChallengeList.class); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i, 0); 

    NotificationManager nm = (NotificationManager) 
       getSystemService(NOTIFICATION_SERVICE); 

    Notification notif = new Notification(R.drawable.icon, "Ny utmaning!", System.currentTimeMillis()); 


    notif.setLatestEventInfo(this, "Triviation", message + " utmanar dig!", pendingIntent); 

    notif.defaults |= Notification.DEFAULT_ALL; 
    notif.flags |= Notification.FLAG_AUTO_CANCEL; 

    //notif.vibrate = new long [] {0, 1000}; 

    nm.notify(prefs.id(), notif); 
} 

Это мое уведомление-активность, но когда я называю его я получаю сообщение об ошибке на линии:Android ContextWrapper.Java:100

prefs = new AppPreferences(getApplicationContext()); 

LogCat говорит это:

05-03 18:20:13.441: E/AndroidRuntime(1688): java.lang.RuntimeException: Unable to start   receiver se.saxman.triviation.C2DMReceiver: java.lang.NullPointerException 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:1809) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.app.ActivityThread.access$2400(ActivityThread.java:117) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.os.Looper.loop(Looper.java:130) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at dalvik.system.NativeStart.main(Native Method) 
05-03 18:20:13.441: E/AndroidRuntime(1688): Caused by: java.lang.NullPointerException 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at se.saxman.triviation.GameNotification.newNotification(GameNotification.java:15) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at se.saxman.triviation.C2DMReceiver.onReceive(C2DMReceiver.java:63) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:1798) 
05-03 18:20:13.441: E/AndroidRuntime(1688):  ... 10 more 

I используйте ту же строку кода в другой Деятельности, и она работает, но не здесь. Как так?

+0

Как эта деятельность была вызвана/создана? ... я уверен, что вы создаете его с помощью 'new GameNotification (...)' ... и активность не инициируется ... – Selvin

+0

Да, GM = new GameNotification(); Должен ли я поступать иначе? – simtaxman

+1

Действие должно начинаться через startActivity (из другого вида деятельности). Метод getApplicationContext работает только тогда, когда он создан таким образом, и после того, как onCreate был выполнен. – Snicolas

ответ

1

Вы не можете getContext в конструкторе, вы можете войти в onCreate(). Посмотрите в свой код, вы используете newNotification() в конструкторах класса?