From c00be08606d01c4329c79c3789b49e4ebecd7baf Mon Sep 17 00:00:00 2001 From: Elliot Date: Sun, 7 Feb 2016 14:11:10 -0600 Subject: [PATCH 1/2] fix null pointer with savedInstanceState --- .../ui/fragments/tasks/TaskRecyclerViewFragment.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java index 1601553ac..803a4cce0 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java @@ -4,6 +4,7 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -26,6 +27,7 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli public RecyclerView mRecyclerView; public RecyclerView.Adapter mAdapter; private String classType; + private static final String CLASS_TYPE_KEY = "CLASS_TYPE_KEY"; // TODO needs a bit of cleanup public void SetInnerAdapter(HabitItemRecyclerViewAdapter adapter, String classType) { @@ -41,6 +43,10 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli view = inflater.inflate(R.layout.fragment_recyclerview, container, false); } + if (savedInstanceState != null){ + this.classType = savedInstanceState.getString(CLASS_TYPE_KEY, ""); + } + switch (this.classType) { case Task.TYPE_HABIT: { this.tutorialStepIdentifier = "habits"; @@ -86,6 +92,12 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli mRecyclerView.setAdapter(mAdapter); } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putString(CLASS_TYPE_KEY, this.classType); + } + public static TaskRecyclerViewFragment newInstance(HabitItemRecyclerViewAdapter adapter, String classType) { TaskRecyclerViewFragment fragment = new TaskRecyclerViewFragment(); fragment.setRetainInstance(true); From 6de4943f8e89d1523d9c225fcd14ace0dcb58b03 Mon Sep 17 00:00:00 2001 From: Elliot Date: Sun, 7 Feb 2016 14:16:04 -0600 Subject: [PATCH 2/2] fix blank state after restart --- .../android/habitica/ui/activities/MainActivity.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 946327d7c..6539cd17f 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -182,6 +182,15 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O this.mAPIHelper.retrieveUser(new HabitRPGUserCallback(this)); } } + + //after the activity has been stopped and is thereafter resumed, + //a state can arise in which the active fragment no longer has a + //reference to the tabLayout (and all its adapters are null). + //Recreate the fragment as a result. + if (activeFragment != null && activeFragment.tabLayout == null){ + activeFragment = null; + drawer.setSelectionAtPosition(1); + } } private void setupCheckout() {