Я испытываю NPE у 1% своих пользователей, но не могу воспроизвести сбой. У меня есть базовое действие с экземпляром царства, к которому я обращаюсь во всех других моих действиях / фрагментах. В одном фрагменте во время транзакции я получаю NPE для этого базового экземпляра. Почему это происходит, и только для некоторых пользователей?
Базовая активность
public Realm realm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
realm = Realm.getDefaultInstance();
}
@Override
public void onDestroy() {
if (realm != null) {
realm.removeAllChangeListeners();
realm.close();
}
super.onDestroy();
}
Базовый фрагмент
protected Realm getRealm() {
if (getActivity() != null && getActivity() instanceof BaseActivity) {
return ((BaseActivity)getActivity()).realm;
}
return null;
}
MyErrorFragment
private MyClass myInstance;
protected void myErrorMethod() {
getRealm().executeTransactionAsync(realm -> realm.createObject(ExerciseOptionsResult.class, optionsKey), () -> {
myInstance = getRealm()
.where(ExerciseOptionsResult.class) // THIS IS WHERE I GET A NPE
.equalTo("optionsKey", optionsKey)
.findFirst();
applyChangeListenerToItem();
});
} else {
doSomethingElse(myInstance);
}
}
initView();
initOtherView();
}