From 85393b0d40bdcdc5c29a72a41811610b344673af Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Tue, 8 Mar 2016 21:22:59 -0500 Subject: [PATCH] Handle configuration changes --- .../uhabits/dialogs/HistoryEditorDialog.java | 24 ++++++++++++++++--- .../uhabits/fragments/ShowHabitFragment.java | 15 ++++++++++-- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java b/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java index 4ffa9dde7..9979ef8ab 100644 --- a/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java +++ b/app/src/main/java/org/isoron/uhabits/dialogs/HistoryEditorDialog.java @@ -43,10 +43,15 @@ public class HistoryEditorDialog extends DialogFragment public Dialog onCreateDialog(Bundle savedInstanceState) { Context context = getActivity(); - + historyView = new HabitHistoryView(context, null); int p = (int) getResources().getDimension(R.dimen.history_editor_padding); - historyView = new HabitHistoryView(context, null); + if(savedInstanceState != null) + { + long id = savedInstanceState.getLong("habit", -1); + if(id > 0) this.habit = Habit.get(id); + } + historyView.setPadding(p, 0, p, 0); historyView.setHabit(habit); historyView.setIsEditable(true); @@ -77,7 +82,7 @@ public class HistoryEditorDialog extends DialogFragment @Override public void onClick(DialogInterface dialog, int which) { - if(listener != null) listener.onHistoryEditorClosed(); + dismiss(); } public void setHabit(Habit habit) @@ -86,6 +91,19 @@ public class HistoryEditorDialog extends DialogFragment if(historyView != null) historyView.setHabit(habit); } + @Override + public void onPause() + { + super.onPause(); + if(listener != null) listener.onHistoryEditorClosed(); + } + + @Override + public void onSaveInstanceState(Bundle outState) + { + outState.putLong("habit", habit.getId()); + } + public void setListener(Listener listener) { this.listener = listener; diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java index 6cbbf3746..00193800e 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java @@ -90,10 +90,21 @@ public class ShowHabitFragment extends Fragment HistoryEditorDialog frag = new HistoryEditorDialog(); frag.setHabit(habit); frag.setListener(ShowHabitFragment.this); - frag.show(getFragmentManager(), "dialog"); + frag.show(getFragmentManager(), "historyEditor"); } }); + if(savedInstanceState != null) + { + EditHabitFragment fragEdit = (EditHabitFragment) getFragmentManager() + .findFragmentByTag("editHabit"); + HistoryEditorDialog fragEditor = (HistoryEditorDialog) getFragmentManager() + .findFragmentByTag("historyEditor"); + + if(fragEdit != null) fragEdit.setOnSavedListener(this); + if(fragEditor != null) fragEditor.setListener(this); + } + setHasOptionsMenu(true); return view; } @@ -138,7 +149,7 @@ public class ShowHabitFragment extends Fragment { EditHabitFragment frag = EditHabitFragment.editSingleHabitFragment(habit.getId()); frag.setOnSavedListener(this); - frag.show(getFragmentManager(), "dialog"); + frag.show(getFragmentManager(), "editHabit"); return true; } }