java – getApplicationContext()中的空指针
发布时间:2020-12-15 03:04:27 所属栏目:Java 来源:网络整理
导读:我正在尝试以下代码,其中一个服务正在实现我的监听器: public class MyListenerClass extends Service implements MyListenerInterface { public void onCurrencyRecieved(MyEventClass event) { System.out.println("Coins Recieved - Listener Successful
我正在尝试以下代码,其中一个服务正在实现我的监听器:
public class MyListenerClass extends Service implements MyListenerInterface { public void onCurrencyRecieved(MyEventClass event) { System.out.println("Coins Recieved - Listener Successful"); stopSelf(); Toast toast = Toast.makeText(getApplicationContext(),"Service Stopped",Toast.LENGTH_LONG); toast.show(); } @Override public void onCreate() { Toast toast = Toast.makeText(getApplicationContext(),"Service started",Toast.LENGTH_LONG); toast.show(); super.onCreate(); } 现在,onCreate()内部的toast工作正常,但是在重写方法内部抛出以下异常: 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): java.lang.NullPointerException 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at com.test.listenertest1.MyListenerClass.onCurrencyRecieved(MyListenerClass.java:28) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at com.test.listenertest1.MyEventGenerator.generateEvent(MyEventGenerator.java:34) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at com.test.listenertest1.MyEventGenerator.<init>(MyEventGenerator.java:16) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at com.test.listenertest1.NewActivity.onKeyDown(NewActivity.java:33) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at android.view.KeyEvent.dispatch(KeyEvent.java:1037) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at android.app.Activity.dispatchKeyEvent(Activity.java:2046) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2368) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at android.view.ViewRoot.handleMessage(ViewRoot.java:1641) 01-03 18:52:35.740: ERROR/AndroidRuntime(2388): at android.os.Handler.dispatchMessage(Handler.java:99) 我想我错过了一些重要的java概念.我们不能在重写方法中使用getApplicationContext()吗? 解决方法
您应该尽量避免使用getApplicationContext(),因为这会大大增加获得Force Closes的机会.
而是使用YourClass.this,在本例中为MyListenerClass.this. 我想在这个例子中它不起作用,因为在stopSelf()之后调用getApplicationContext() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 无法找到Spring NameSpaceHandler – Spring的mvc-
- 在哪里可以获得与Java 8 jdk早期版本一起使用的tools.jar
- java – 如何对大量JUnit测试进行分组/分类
- java – postgresql错误:由于用户请求取消声明
- java – 我可以使用两个不同的线程在相同的套接字上读写吗?
- 【java工具类】对字节数组字符串进行Base64解码并生成图片
- DB独立Java编程 – 建议?
- SpringBoot整合Xxl-Job
- java.lang.IllegalArgumentException:未知参数名称:custo
- java – 获取同一对象的不同JSON表示