使用 MultiDexApplication 会导致 applicationContext 变为 null
Using MultiDexApplication causes applicationContext to become null
我已按照 link - 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。我的应用上下文为空。
添加了一个测试来解释这个问题。在我的 Launch 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- 之后才开始工作..
不知道为什么第一次不行,现在好了。
我已按照 link - 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。我的应用上下文为空。
添加了一个测试来解释这个问题。在我的 Launch 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- 之后才开始工作..
不知道为什么第一次不行,现在好了。