使用MultiDexApplication会导致applicationContext变为null

时间:2016-06-15 12:16:21

标签: android android-multidex

我已按照此链接中的说明将我的应用程序切换为MultiDexApplication - https://developer.android.com/studio/build/multidex.html

现在应用程序安装正确,但我的应用程序上下文为空。你们有没有经历过这样的事情?

如果您需要代码示例,请告诉我,但由于应用程序因无法获取应用程序上下文而崩溃,我无法想到任何可以解释此问题的代码。

获取我的应用程序上下文如下:

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活动中,我添加了以下代码:

if (TrackerApplication.getContext() == null) {
        Log.i("TEST", "Context is null");
    } else {
        Log.i("TEST", "What is the issue?");
    }

LogCat始终打印出Context is null

1 个答案:

答案 0 :(得分:0)

通过执行以下操作结束修复此操作: 1-从app完全删除了multidex代码。 2-清理项目。 3-建造项目。 4-再次将所有multidex代码添加到项目中。 5-再次清理并重建项目。 6-之后才开始工作..

不知道为什么它第一次没有工作,但现在它工作正常。