From b798a8e2b09d9a583ff569ad677d6c13a1de8174 Mon Sep 17 00:00:00 2001 From: Phillip Hsu Date: Fri, 3 Jun 2016 02:43:07 -0700 Subject: [PATCH] Fixed NPE due to Presenter constructor trying to load the alarm before it returns --- .../clock2/editalarm/EditAlarmActivity.java | 5 ++--- .../clock2/editalarm/EditAlarmContract.java | 1 + .../clock2/editalarm/EditAlarmPresenter.java | 11 +++++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java index e44ea1b..56687bf 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java @@ -65,9 +65,8 @@ public class EditAlarmActivity extends BaseActivity implements super.onCreate(savedInstanceState); setWeekDaysText(); mNumpad.setKeyListener(this); - mPresenter = new EditAlarmPresenter(this, - AlarmsRepository.getInstance(this), - getIntent().getLongExtra(EXTRA_ALARM_ID, -1)); + mPresenter = new EditAlarmPresenter(this, AlarmsRepository.getInstance(this)); + mPresenter.loadAlarm(getIntent().getLongExtra(EXTRA_ALARM_ID, -1)); mPresenter.setTimeTextHint(); } diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmContract.java b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmContract.java index eb68b81..908a739 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmContract.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmContract.java @@ -26,6 +26,7 @@ public interface EditAlarmContract { } interface Presenter extends AlarmContract.Presenter { + void loadAlarm(long id); void save(); void delete(); void showNumpad(); diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmPresenter.java b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmPresenter.java index 9100965..c22ee6f 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmPresenter.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmPresenter.java @@ -21,14 +21,17 @@ public class EditAlarmPresenter implements EditAlarmContract.Presenter { @NonNull private final EditAlarmContract.View mView; @NonNull private final Repository mRepository; - @Nullable private final Alarm mAlarm; + @Nullable private Alarm mAlarm; public EditAlarmPresenter(@NonNull EditAlarmContract.View view, - @NonNull Repository repository, - long alarmId) { + @NonNull Repository repository) { mView = view; mRepository = repository; - mAlarm = alarmId > -1 ? repository.getItem(alarmId) : null; + } + + @Override + public void loadAlarm(long alarmId) { + mAlarm = alarmId > -1 ? mRepository.getItem(alarmId) : null; showDetails(); }