diff --git a/src/com/android/settings/RingtonePreference.java b/src/com/android/settings/RingtonePreference.java index 454ae0b497d..41318f0d73c 100644 --- a/src/com/android/settings/RingtonePreference.java +++ b/src/com/android/settings/RingtonePreference.java @@ -49,8 +49,6 @@ public class RingtonePreference extends Preference { private static final String TAG = "RingtonePreference"; - private static int sRequestCode = 100; - private int mRingtoneType; private boolean mShowDefault; private boolean mShowSilent; @@ -213,24 +211,18 @@ public class RingtonePreference extends Preference { } protected void onAttachedToHierarchy(PreferenceManager preferenceManager) { super.onAttachedToHierarchy(preferenceManager); - - mRequestCode = sRequestCode++; } public boolean onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == mRequestCode) { - if (data != null) { - Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); + if (data != null) { + Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); - if (callChangeListener(uri != null ? uri.toString() : "")) { - onSaveRingtone(uri); - } + if (callChangeListener(uri != null ? uri.toString() : "")) { + onSaveRingtone(uri); } - - return true; } - return false; + return true; } } diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index 4a44a1d3410..566bb9a9ce9 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -48,7 +48,9 @@ import android.provider.Settings; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.TwoStatePreference; +import android.text.TextUtils; import android.util.Log; + import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.RingtonePreference; @@ -83,6 +85,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab private static final String KEY_ZEN_MODE = "zen_mode"; private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings"; + private static final String SELECTED_PREFERENCE_KEY = "selected_preference"; + private static final int REQUEST_CODE = 200; + private static final String[] RESTRICTED_KEYS = { KEY_MEDIA_VOLUME, KEY_ALARM_VOLUME, @@ -175,6 +180,13 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab initVibrateWhenRinging(); updateRingerMode(); updateEffectsSuppressor(); + + if (savedInstanceState != null) { + String selectedPreference = savedInstanceState.getString(SELECTED_PREFERENCE_KEY, null); + if (!TextUtils.isEmpty(selectedPreference)) { + mRequestPreference = (RingtonePreference) findPreference(selectedPreference); + } + } } @Override @@ -226,7 +238,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab if (preference instanceof RingtonePreference) { mRequestPreference = (RingtonePreference) preference; mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent()); - startActivityForResult(preference.getIntent(), mRequestPreference.getRequestCode()); + startActivityForResult(preference.getIntent(), REQUEST_CODE); return true; } return super.onPreferenceTreeClick(preference); @@ -240,6 +252,14 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab } } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mRequestPreference != null) { + outState.putString(SELECTED_PREFERENCE_KEY, mRequestPreference.getKey()); + } + } + // === Volumes === private VolumeSeekBarPreference initVolumePreference(String key, int stream, int muteIcon) {