diff --git a/res/layout/preference_volume_slider.xml b/res/layout/preference_volume_slider.xml index 7e146b88ba8..89ecec02c5b 100644 --- a/res/layout/preference_volume_slider.xml +++ b/res/layout/preference_volume_slider.xml @@ -72,9 +72,10 @@ android:orientation="vertical"/> - - + diff --git a/src/com/android/settings/notification/RingVolumePreferenceController.java b/src/com/android/settings/notification/RingVolumePreferenceController.java index ea071fa6fd7..e74b1104d8c 100644 --- a/src/com/android/settings/notification/RingVolumePreferenceController.java +++ b/src/com/android/settings/notification/RingVolumePreferenceController.java @@ -17,6 +17,8 @@ package com.android.settings.notification; import android.app.NotificationManager; +import android.arch.lifecycle.LifecycleObserver; +import android.arch.lifecycle.OnLifecycleEvent; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; @@ -31,6 +33,7 @@ import android.os.Vibrator; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settingslib.core.lifecycle.Lifecycle; import java.util.Objects; @@ -58,6 +61,7 @@ public class RingVolumePreferenceController extends VolumeSeekBarPreferenceContr updateRingerMode(); } + @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) @Override public void onResume() { super.onResume(); @@ -66,6 +70,7 @@ public class RingVolumePreferenceController extends VolumeSeekBarPreferenceContr updatePreferenceIcon(); } + @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) @Override public void onPause() { super.onPause(); @@ -118,11 +123,10 @@ public class RingVolumePreferenceController extends VolumeSeekBarPreferenceContr private void updatePreferenceIcon() { if (mPreference != null) { - mPreference.showIcon(mSuppressor != null - ? com.android.internal.R.drawable.ic_audio_ring_notif_mute - : mRingerMode == AudioManager.RINGER_MODE_VIBRATE || wasRingerModeVibrate() - ? com.android.internal.R.drawable.ic_audio_ring_notif_vibrate - : com.android.internal.R.drawable.ic_audio_ring_notif); + mPreference.showIcon( + mRingerMode == AudioManager.RINGER_MODE_VIBRATE || wasRingerModeVibrate() + ? com.android.internal.R.drawable.ic_audio_ring_notif_vibrate + : com.android.internal.R.drawable.ic_audio_ring_notif); } } diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index 4c9ee38afa2..dbf8ecf55bf 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -146,10 +146,16 @@ public class SoundSettings extends DashboardFragment { @Override public void onAttach(Context context) { super.onAttach(context); - use(AlarmVolumePreferenceController.class).setCallback(mVolumeCallback); - use(MediaVolumePreferenceController.class).setCallback(mVolumeCallback); - use(RingVolumePreferenceController.class).setCallback(mVolumeCallback); - use(NotificationVolumePreferenceController.class).setCallback(mVolumeCallback); + ArrayList volumeControllers = new ArrayList<>(); + volumeControllers.add(use(AlarmVolumePreferenceController.class)); + volumeControllers.add(use(MediaVolumePreferenceController.class)); + volumeControllers.add(use(RingVolumePreferenceController.class)); + volumeControllers.add(use(NotificationVolumePreferenceController.class)); + + for (VolumeSeekBarPreferenceController controller : volumeControllers) { + controller.setCallback(mVolumeCallback); + getLifecycle().addObserver(controller); + } } // === Volumes === diff --git a/src/com/android/settings/notification/VolumeSeekBarPreference.java b/src/com/android/settings/notification/VolumeSeekBarPreference.java index 8a48e95c166..d7b5e521a50 100644 --- a/src/com/android/settings/notification/VolumeSeekBarPreference.java +++ b/src/com/android/settings/notification/VolumeSeekBarPreference.java @@ -196,8 +196,7 @@ public class VolumeSeekBarPreference extends SeekBarPreference { if (mSuppressionTextView != null && mSeekBar != null) { mSuppressionTextView.setText(mSuppressionText); final boolean showSuppression = !TextUtils.isEmpty(mSuppressionText); - mSuppressionTextView.setVisibility(showSuppression ? View.VISIBLE : View.INVISIBLE); - mSeekBar.setVisibility(showSuppression ? View.INVISIBLE : View.VISIBLE); + mSuppressionTextView.setVisibility(showSuppression ? View.VISIBLE : View.GONE); } }