我没有想法,但是......
public class MyApplication extends MultiDexApplication {
public MyApplication() {//for example, here
instance = this;
}
@Override
public void onCreate() { //or here
instance = this;
super.onCreate();
}
}
在我的活动中
@Override
protected void onPause() {//onStart, onCreate, etc
MyApplication.getInstance().doSomething();
super.onPause();
}
在随机的瞬间,我遇到了崩溃。
FATAL EXCEPTION: main
Process: com.mypackage.myapplication, PID: 17579
java.lang.RuntimeException: Unable to pause activity {com.mypackage.myapplication.MyFragmentActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.mypackage.myapplication.MyApplication.getInstance().doSomething()' on a null object reference
即MyApplication.getInstance返回null!你觉得怎么样,问题是什么? 在AndroidStudio 2.0中使用调试
答案 0 :(得分:2)
看起来您希望应用程序上下文执行某些操作,我不知道您为什么需要自己的应用程序实例。
使用getApplicationContext();
获取上下文
另一种解决方案是在应用程序标记
下的清单中定义应用程序类android:name=".MyApplication"
以下评论以获取更多信息
答案 1 :(得分:1)
请勿在应用程序类中将实例保持为静态。 你可以用
(MyApplication) getApplicationContext()
这将为您提供应用程序对象。
不要直接将活动对象强制转换为MainApplication类。
如果是测试用例,您可以将其更改为getApplicationContext()