diff --git a/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java b/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java index 9554e81281224..95a8f1d9782e0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java @@ -28,6 +28,7 @@ import android.view.View; public class CustomDialogPreference extends DialogPreference { private CustomPreferenceDialogFragment mFragment; + private DialogInterface.OnShowListener mOnShowListener; public CustomDialogPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { @@ -54,6 +55,10 @@ public class CustomDialogPreference extends DialogPreference { return mFragment != null ? mFragment.getDialog() : null; } + public void setOnShowListener(DialogInterface.OnShowListener listner) { + mOnShowListener = listner; + } + protected void onPrepareDialogBuilder(AlertDialog.Builder builder, DialogInterface.OnClickListener listener) { } @@ -71,6 +76,10 @@ public class CustomDialogPreference extends DialogPreference { mFragment = fragment; } + private DialogInterface.OnShowListener getOnShowListener() { + return mOnShowListener; + } + public static class CustomPreferenceDialogFragment extends PreferenceDialogFragment { public static CustomPreferenceDialogFragment newInstance(String key) { @@ -103,6 +112,13 @@ public class CustomDialogPreference extends DialogPreference { getCustomizablePreference().onBindDialogView(view); } + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Dialog dialog = super.onCreateDialog(savedInstanceState); + dialog.setOnShowListener(getCustomizablePreference().getOnShowListener()); + return dialog; + } + @Override public void onClick(DialogInterface dialog, int which) { super.onClick(dialog, which);