我已按照此链接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/

10-10 17:21