diff --git a/core/java/android/preference/DialogPreference.java b/core/java/android/preference/DialogPreference.java index dfdb57c4e3f80..fb7b2320915c0 100644 --- a/core/java/android/preference/DialogPreference.java +++ b/core/java/android/preference/DialogPreference.java @@ -36,8 +36,6 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; -import android.view.Window; -import android.view.WindowManager; import android.widget.TextView; /** @@ -337,9 +335,6 @@ public abstract class DialogPreference extends Preference implements if (state != null) { dialog.onRestoreInstanceState(state); } - if (needInputMethod()) { - requestInputMethod(dialog); - } dialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { @@ -379,24 +374,6 @@ public abstract class DialogPreference extends Preference implements } } - /** - * Returns whether the preference needs to display a soft input method when the dialog - * is displayed. Default is false. Subclasses should override this method if they need - * the soft input method brought up automatically. - * @hide - */ - protected boolean needInputMethod() { - return false; - } - - /** - * Sets the required flags on the dialog window to enable input method window to show up. - */ - private void requestInputMethod(Dialog dialog) { - Window window = dialog.getWindow(); - window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); - } - /** * Creates the content view for the dialog (if a custom content view is * required). By default, it inflates the dialog layout resource if it is diff --git a/core/java/android/preference/EditTextPreference.java b/core/java/android/preference/EditTextPreference.java index af6f18416870d..75c5102d04f5a 100644 --- a/core/java/android/preference/EditTextPreference.java +++ b/core/java/android/preference/EditTextPreference.java @@ -21,6 +21,7 @@ import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.SharedPreferences; import android.content.res.TypedArray; +import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; @@ -28,6 +29,7 @@ import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; +import android.view.WindowInsets; import android.widget.EditText; /** @@ -123,7 +125,7 @@ public class EditTextPreference extends DialogPreference { EditText editText = mEditText; editText.setText(getText()); - + ViewParent oldParent = editText.getParent(); if (oldParent != view) { if (oldParent != null) { @@ -133,6 +135,13 @@ public class EditTextPreference extends DialogPreference { } } + @Override + protected void showDialog(Bundle state) { + super.showDialog(state); + mEditText.requestFocus(); + mEditText.getWindowInsetsController().show(WindowInsets.Type.ime()); + } + /** * Adds the EditText widget of this preference to the dialog's view. * @@ -183,13 +192,6 @@ public class EditTextPreference extends DialogPreference { return mEditText; } - /** @hide */ - @Override - protected boolean needInputMethod() { - // We want the input method to show, if possible, when dialog is displayed - return true; - } - @Override protected Parcelable onSaveInstanceState() { final Parcelable superState = super.onSaveInstanceState();