diff options
author | Fan Zhang <zhfan@google.com> | 2018-07-17 10:12:30 -0700 |
---|---|---|
committer | Fan Zhang <zhfan@google.com> | 2018-07-17 10:59:02 -0700 |
commit | af32e726e6eb30c938cdd355b5a11e87153c9c5d (patch) | |
tree | 4a11b686cbf2d4840989e546cc7e518b083ccc16 /src/com/android | |
parent | 9bd5b318fc451850a43386942bcb92b532b94573 (diff) | |
download | packages_apps_Settings-af32e726e6eb30c938cdd355b5a11e87153c9c5d.tar.gz packages_apps_Settings-af32e726e6eb30c938cdd355b5a11e87153c9c5d.tar.bz2 packages_apps_Settings-af32e726e6eb30c938cdd355b5a11e87153c9c5d.zip |
Allow activity to delegate onActivityResult to fragments
Change-Id: Iac388f1726269239313d666f3123f28348e0c90a
Fixes: 111531567
Test: rototests
Diffstat (limited to 'src/com/android')
4 files changed, 50 insertions, 2 deletions
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index cafe5cf947..cacd04e535 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -46,6 +46,7 @@ import com.android.internal.util.ArrayUtils; import com.android.settings.Settings.WifiSettingsActivity; import com.android.settings.applications.manageapplications.ManageApplications; import com.android.settings.backup.BackupSettingsActivity; +import com.android.settings.core.OnActivityResultListener; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.gateway.SettingsGateway; @@ -64,6 +65,7 @@ import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.List; +import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -375,6 +377,19 @@ public class SettingsActivity extends SettingsBaseActivity } } + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + final List<Fragment> fragments = getSupportFragmentManager().getFragments(); + if (fragments != null) { + for (Fragment fragment : fragments) { + if (fragment instanceof OnActivityResultListener) { + fragment.onActivityResult(requestCode, resultCode, data); + } + } + } + } + @VisibleForTesting void launchSettingFragment(String initialFragmentName, boolean isSubSettings, Intent intent) { if (!mIsShowingDashboard && initialFragmentName != null) { diff --git a/src/com/android/settings/core/OnActivityResultListener.java b/src/com/android/settings/core/OnActivityResultListener.java new file mode 100644 index 0000000000..5832c7f892 --- /dev/null +++ b/src/com/android/settings/core/OnActivityResultListener.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.core; + +import android.app.Activity; +import android.content.Intent; + +/** + * This interface marks a class that it wants to listen to + * {@link Activity#onActivityResult(int, int, Intent)}. + * + * Whenever {@link com.android.settings.SettingsActivity} receives an activity result, it will + * propagate the data to this interface so it has a chance to inspect and handle activity results. + */ +public interface OnActivityResultListener { +} diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java index 2b5a8abc9d..7120cf6130 100644 --- a/src/com/android/settings/notification/ConfigureNotificationSettings.java +++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java @@ -27,6 +27,7 @@ import android.provider.SearchIndexableResource; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.RingtonePreference; +import com.android.settings.core.OnActivityResultListener; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.search.BaseSearchIndexProvider; @@ -44,7 +45,8 @@ import androidx.fragment.app.Fragment; import androidx.preference.Preference; @SearchIndexable -public class ConfigureNotificationSettings extends DashboardFragment { +public class ConfigureNotificationSettings extends DashboardFragment implements + OnActivityResultListener { private static final String TAG = "ConfigNotiSettings"; @VisibleForTesting diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index dafc538907..cc3b7c9f7d 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -31,6 +31,7 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.RingtonePreference; +import com.android.settings.core.OnActivityResultListener; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.sound.HandsFreeProfileOutputPreferenceController; @@ -51,7 +52,7 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; @SearchIndexable -public class SoundSettings extends DashboardFragment { +public class SoundSettings extends DashboardFragment implements OnActivityResultListener { private static final String TAG = "SoundSettings"; private static final String SELECTED_PREFERENCE_KEY = "selected_preference"; |