Fix ActivityResultLauncher lifecycle issues

If an activity is re-created, its result launchers that were registered
during instantiation are not available, so register those in onCreate
instead and unregister in onDestroy.

Change-Id: I7fd2a61ddbb056e0bf761b6918dc371db8ddbe33
diff --git a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
index 04e07d2..8687d08 100644
--- a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
+++ b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java
@@ -50,10 +50,7 @@
 
     private NavigationLayout mNavigationBar;
 
-    private final ActivityResultLauncher<Intent> mNextIntentResultLauncher =
-            registerForActivityResult(
-                    new StartDecoratedActivityForResult(),
-                    BaseSetupWizardActivity.this::onNextIntentResult);
+    private ActivityResultLauncher<Intent> mNextIntentResultLauncher;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -61,6 +58,9 @@
             logActivityState("onCreate savedInstanceState=" + savedInstanceState);
         }
         super.onCreate(savedInstanceState);
+        mNextIntentResultLauncher = registerForActivityResult(
+                new StartDecoratedActivityForResult(),
+                BaseSetupWizardActivity.this::onNextIntentResult);
         initLayout();
         mNavigationBar = getNavigationBar();
         if (mNavigationBar != null) {
@@ -125,6 +125,7 @@
             logActivityState("onDestroy");
         }
         super.onDestroy();
+        mNextIntentResultLauncher.unregister();
     }
 
     @Override
diff --git a/src/org/lineageos/setupwizard/SubBaseActivity.java b/src/org/lineageos/setupwizard/SubBaseActivity.java
index 7c83658..fe6ab12 100644
--- a/src/org/lineageos/setupwizard/SubBaseActivity.java
+++ b/src/org/lineageos/setupwizard/SubBaseActivity.java
@@ -28,10 +28,7 @@
 
     protected abstract void onStartSubactivity();
 
-    private final ActivityResultLauncher<Intent> mSubactivityResultLauncher =
-            registerForActivityResult(
-                    new StartDecoratedActivityForResult(),
-                    SubBaseActivity.this::onSubactivityResult);
+    private ActivityResultLauncher<Intent> mSubactivityResultLauncher;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -39,6 +36,9 @@
             Log.d(TAG, "onCreate savedInstanceState=" + savedInstanceState);
         }
         super.onCreate(savedInstanceState);
+        mSubactivityResultLauncher = registerForActivityResult(
+                new StartDecoratedActivityForResult(),
+                SubBaseActivity.this::onSubactivityResult);
         setNextAllowed(false);
         if (savedInstanceState == null) {
             onStartSubactivity();
@@ -46,6 +46,12 @@
     }
 
     @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        mSubactivityResultLauncher.unregister();
+    }
+
+    @Override
     public void onStart() {
         super.onStart();
     }