Почему я получаю NPE на своем базовом экземпляре Realm? - PullRequest
0 голосов
/ 04 октября 2019

Я испытываю 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();
    }
...