Rework activity launching and result handling
* Rename or eliminate methods that could be easily confused for AOSP methods due to the reuse of AOSP names. * Separate out the handling of results for subactivites and for the next action (intent), each using its own activity launcher and callback. * Add a StartDecoratedActivityForResult contract to ease the launching of activities without the caller needing to add SUW-related extras. Change-Id: Iffaba4c51b2c90c42b8b243874a62cdea9e0c793
This commit is contained in:
@@ -18,6 +18,7 @@ import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.activity.result.ActivityResult;
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
|
||||
public abstract class SubBaseActivity extends BaseSetupWizardActivity {
|
||||
|
||||
@@ -27,6 +28,11 @@ public abstract class SubBaseActivity extends BaseSetupWizardActivity {
|
||||
|
||||
protected abstract void onStartSubactivity();
|
||||
|
||||
private final ActivityResultLauncher<Intent> mSubactivityResultLauncher =
|
||||
registerForActivityResult(
|
||||
new StartDecoratedActivityForResult(),
|
||||
SubBaseActivity.this::onSubactivityResult);
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
if (LOGV) {
|
||||
@@ -61,7 +67,7 @@ public abstract class SubBaseActivity extends BaseSetupWizardActivity {
|
||||
subactivityIntent.putExtra(EXTRA_WIZARD_BUNDLE, wizardBundle);
|
||||
}
|
||||
try {
|
||||
startActivityForResult(subactivityIntent);
|
||||
mSubactivityResultLauncher.launch(subactivityIntent);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Log.w(TAG, "activity not found; start next screen and finish; intent=" + intent);
|
||||
mIsSubactivityNotFound = true;
|
||||
@@ -70,8 +76,17 @@ public abstract class SubBaseActivity extends BaseSetupWizardActivity {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(ActivityResult activityResult) {
|
||||
super.onActivityResult(activityResult);
|
||||
protected void onNextIntentResult(@NonNull ActivityResult activityResult) {
|
||||
super.onNextIntentResult(activityResult);
|
||||
int resultCode = activityResult.getResultCode();
|
||||
Intent data = activityResult.getData();
|
||||
if (resultCode == RESULT_CANCELED && data != null
|
||||
&& data.getBooleanExtra("onBackPressed", false)) {
|
||||
onStartSubactivity();
|
||||
}
|
||||
}
|
||||
|
||||
protected void onSubactivityResult(@NonNull ActivityResult activityResult) {
|
||||
int resultCode = activityResult.getResultCode();
|
||||
Intent data = activityResult.getData();
|
||||
if (resultCode != RESULT_CANCELED) {
|
||||
|
Reference in New Issue
Block a user