Разное поведение getApplicationContext () - PullRequest
0 голосов
/ 27 декабря 2018

Я использую TinyDB для передачи ArrayList из одного занятия в другое.TinyDB имеет конструктор, подобный следующему:

public class TinyDB {
    public TinyDB(Context appContext) {
        preferences = PreferenceManager.getDefaultSharedPreferences(appContext);
    }
}

Когда я инициализирую метод TinyDB изнутри, все работает нормально:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    TinyDB tinydb = new TinyDB(getApplicationContext());
}

Но когда я помещаю это raw вне любого метода,

TinyDB tinydb = new TinyDB(getApplicationContext());
@Override
public boolean onOptionsItemSelected(MenuItem item) {

}

Появляется

java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.content.Context android.content.Context.getApplicationContext ()' для ссылки на нулевой объект

Может кто-нибудь объяснить мне, в чем разница между этими двумя способами инициализации TinyDB?Любые ссылки также будут оценены.

...