2016-06-15 2 views
3

Я переключил свое приложение на MultiDexApplication, следуя инструкциям в этой ссылке - https://developer.android.com/studio/build/multidex.html.Использование MultiDexApplication приводит к тому, что applicationContext становится нулевым

Приложение теперь установлено правильно, НО мой контекст приложения имеет значение NULL. Кто-нибудь из вас испытал что-то подобное раньше?

Сообщите мне, если вам нужны образцы кода, но поскольку приложение выходит из строя, потому что оно не может получить контекст приложения, я не могу придумать какой-либо код, который бы объяснил проблему.

Получение моего контекста приложения следующим образом:

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. Мой контекст приложения - null.

Добавлен тест для объяснения проблемы. В моей Launch деятельности я добавил этот код:

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

LogCat всегда печатает Context is null.

+0

Где ваш код и код? –

+0

Можете ли вы поделиться своим кодом приложения, где вы переопределите 'attachBaseContext'? – ishmaelMakitla

+0

@MD, см. Мои правки – Lunchbox

ответ

0

Закончен, исправил это, выполнив следующие действия: 1- Полностью удаленный мультидексе код из приложения. 2- Очищенный проект. 3- Встроенный проект. 4- Добавлен весь код мультидекса в проект. 5. Очистите и снова перестройте проект. 6- Он только начал работать после этого.

Не знаю, почему он не работал в первый раз, но теперь он отлично работает.

+0

Здравствуйте, я испытываю ту же проблему. Что вы подразумеваете под« Полностью удаленный мультидексе код из приложения "? –

+0

@RicardoRuizRomero Привет, я просто удалил всю реализацию multidex, которую я добавил. Как из моего файла gradle и моего класса приложения. Как и в классе TestApplication extends Application. Если вы хотите получить дополнительную информацию, просто спросите, и я объясню больше подробно :) – Lunchbox