From 317a15e0eb426c2a7a9b46f25fb8fd2934dba690 Mon Sep 17 00:00:00 2001 From: cretin45 Date: Thu, 9 Apr 2015 10:43:41 -0700 Subject: [PATCH] SetupWizard: Ensure page object isn't null if FM destroyed Change-Id: Ia794e7656587ca803d02418d3d84d4df5027cd00 (cherry picked from commit 62b79e38809699edf47f8a4fad16fdf706ceaa5e) --- .../setupwizard/ui/SetupPageFragment.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java index 93b349c..b0df440 100644 --- a/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java +++ b/src/com/cyanogenmod/setupwizard/ui/SetupPageFragment.java @@ -43,11 +43,6 @@ public abstract class SetupPageFragment extends Fragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); - Bundle args = getArguments(); - mKey = args.getString(Page.KEY_PAGE_ARGUMENT); - if (mKey == null) { - throw new IllegalArgumentException("No KEY_PAGE_ARGUMENT given"); - } SetupStats.addEvent(SetupStats.Categories.PAGE_LOAD, SetupStats.Action.PAGE_LOADED, mKey, String.valueOf(System.currentTimeMillis())); } @@ -65,6 +60,11 @@ public abstract class SetupPageFragment extends Fragment { @Override public void onAttach(Activity activity) { super.onAttach(activity); + Bundle args = getArguments(); + mKey = args.getString(Page.KEY_PAGE_ARGUMENT); + if (mKey == null) { + throw new IllegalArgumentException("No KEY_PAGE_ARGUMENT given"); + } if (!(activity instanceof SetupDataCallbacks)) { throw new ClassCastException("Activity implement SetupDataCallbacks"); } @@ -90,6 +90,11 @@ public abstract class SetupPageFragment extends Fragment { @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { + // On low mem devices, this fragment might get destroyed by + // fragment manager while we are in another activity. + if (mPage == null) { + mPage = mCallbacks.getPage(mKey); + } mPage.onActivityResult(requestCode, resultCode, data); }