我已按照此链接https://developer.android.com/studio/build/multidex.html中的指示将应用程序切换到MultiDexApplication。
该应用程序现在可以正确安装,但是我的应用程序上下文为空。你们有没有经历过类似的经历?
让我知道您是否需要代码示例,但是由于该应用程序由于无法获取应用程序上下文而崩溃,因此我无法想到任何可以解释该问题的代码。
获取我的应用程序上下文,如下所示:
TrackerApplication.getContext();
public class TrackerApplication extends MultiDexApplication {
private static Context context;
public TrackerApplication() {
super();
context = this;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
}
public static Context getContext() {
return context;
}
}
然后,当我调用:
TrackerApplication.getContext().getSharedPreferences("MySettings",
Context.MODE_PRIVATE);
我得到一个NullPointer。我的应用上下文为空。
添加了一个测试以解释该问题。在启动 Activity 中,我添加了以下代码:
if (TrackerApplication.getContext() == null) {
Log.i("TEST", "Context is null");
} else {
Log.i("TEST", "What is the issue?");
}
LogCat总是打印出
Context is null
。 最佳答案
通过执行以下操作最终解决了此问题:
1-从应用程序中完全删除了multidex代码。
2-清理项目。
3-建立项目。
4-再次将所有multidex代码添加到项目中。
5-清理并再次重建项目。
6-之后才开始工作。
不知道为什么它第一次不起作用,但是现在可以正常工作了。
关于android - 使用MultiDexApplication导致applicationContext变为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37835217/