Я использую MVP в своем демонстрационном проекте, в моем View (фрагмент) у меня есть два editTexts (номер дела и имя пользователя) и кнопка.
При нажатии кнопки Я хочу вставить этот объект Case в базу данных.Итак, сначала проверьте, есть ли дело с тем же номером.И если это ложно, я собираюсь сохранить его в базе данных и уведомить пользователя, что дело сохранено в базе данных.В противном случае, просто отправив обратно сообщение, что операция не удалась и повторите попытку с другим номером.
Итак, объект проходит через слои, View> Presenter> Model> Repository.В репозитории проверка условий и отправка сообщения обратно для просмотра через те же слои, но наоборот (Репозиторий> Модель> Презентатор> Вид).
Я регистрирую все классы на наличие ошибок, и все в порядке.Но когда дело доходит до Presenter, я получаю "на нулевую ссылку на объект" для моего представления.
метод в моем Presenter, вызываемый из Model, где я получаю ошибку ...
public void sameCaseNumberMessage(String string){
Log.d(TAG, "message from repository" + string);
view.showToastMessage(string); //but here, view is on a null object reference
}
На мой взгляд ...
@Inject
BottomFragmentContract.Presenter presenter;
...
@Override
public void onResume() {
super.onResume();
presenter.setView(this);
}
...
На моем докладчике ...
@Nullable
private BottomFragmentContract.View view;
...
@Override
public void setView(BottomFragmentContract.View view) {
this.view = view;
Log.d(TAG, "Hashcode is fine : " + this.view.toString());
}
...