获取应用程序实例返回null

时间:2016-01-17 11:15:51

标签: android debugging

我没有想法,但是......

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中使用调试

2 个答案:

答案 0 :(得分:2)

看起来您希望应用程序上下文执行某些操作,我不知道您为什么需要自己的应用程序实例。 使用getApplicationContext();获取上下文

另一种解决方案是在应用程序标记

下的清单中定义应用程序类
android:name=".MyApplication"

以下评论以获取更多信息

答案 1 :(得分:1)

请勿在应用程序类中将实例保持为静态。 你可以用

(MyApplication) getApplicationContext()

这将为您提供应用程序对象。

不要直接将活动对象强制转换为MainApplication类。

如果是测试用例,您可以将其更改为getApplicationContext()