EditTextPreference не показывает цифровую клавиатуру после переноса проекта на androidx - PullRequest
0 голосов
/ 23 ноября 2018

После переноса моего проекта в AndroidX с использованием функциональности Migrate to AndroidX..., предоставленной Android Studio, и внесения соответствующих изменений в мои зависимости, чтобы все работало так, как это должно быть, я столкнулся с небольшой проблемой, которую я не смогРазрешить.

Чтобы установить номер устройства в моем приложении, я использовал EditTextPreference, подобный следующему, определенному в моем pref_screen.xml, который установлен в классе PreferenceFragmentCompat с setPreferencesFromResource(R.xml.pref_screen, string):

<EditTextPreference
            android:icon="@drawable/ic_perm_device_information_black_24dp"
            android:inputType="number"
            android:key="change_device_id"
            android:maxLines="1"
            android:selectAllOnFocus="true"
            android:singleLine="true"
            android:summary="@string/settings_device_id"
            android:title="@string/pref_title_change_device_id" />

Он использовалчтобы показать цифровую клавиатуру для изменения значения, но после перехода на AndroidX она продолжает показывать обычную клавиатуру, как показано на рисунке ниже.Я попытался изменить inputType и определить десятичные дроби в xml, но безрезультатно.Что-то изменилось, чтобы установить inputType для клавиатуры после перехода на AndroidX, или я упустил что-то очевидное?

android:inputType="numberDecimal"
android:digits="0123456789"

EditTextPreference keyboard

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Из ответа здесь: https://stackoverflow.com/a/55461028/7059947

Приведите ваше предпочтение EditTextPreference и используйте setInputType On Bind.Это спасло мой день:)

            EditTextPreference edpPrefernce = (EditTextPreference) pPreference;

            edpPrefernce.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
                @Override
                public void onBindEditText(@NonNull EditText editText) {

                    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
                }
            });
0 голосов
/ 11 июля 2019

[решено]

Добавить в build.gradle (модуль приложения):

implementation 'androidx.preference:preference:1.1.0-rc01'
0 голосов
/ 11 декабря 2018

Google еще не исправил это.Вы можете использовать решение takisoft для этой проблемы:

https://bintray.com/takisoft/android/com.takisoft.preferencex%3Apreferencex/1.0.0

Добавить в build.gradle (проект):

buildscript {
    ...
    repositories {
        maven {
            url  "https://dl.bintray.com/takisoft/android"
        }
    }
    ....
}

Добавить в build.gradle (модуль приложения):

implementation 'com.takisoft.preferencex:preferencex:1.0.0'

Измените импорт в ваших классах и компоненты в ваших ресурсах XML:

androidx.preference.EditTextPreference -> com.takisoft.preferencex.EditTextPreference
androidx.preference.PreferenceCategory -> com.takisoft.preferencex.PreferenceCategory
androidx.preference.PreferenceFragmentCompat -> com.takisoft.preferencex.PreferenceFragmentCompat

В вашем подклассе PreferenceFragmentCompat измените объявление onCreatePreferences(...) на onCreatePreferencesFix(...).

... и вуаля!Старые параметры, такие как numeric и singleLine вернутся и будут работать!

...