Я работаю в Android-проекте о предпочтениях. Я хочу принять целочисленное значение в EditTextPreference. Я ищу по этой теме, и я могу использовать с этим классом Java.
import androidx.preference.EditTextPreference;
public class IntegerEditTextPreference extends EditTextPreference {
public IntegerEditTextPreference(Context context) {
super(context);
}
public IntegerEditTextPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public IntegerEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected String getPersistedString(String defaultReturnValue) {
int defaultValue = -1;
try {
defaultValue = Integer.valueOf(defaultReturnValue);
} catch(NumberFormatException e) {
}
return String.valueOf(getPersistedInt(defaultValue));
}
@Override
protected boolean persistString(String value) {
return persistInt(Integer.valueOf(value));
}
}
Но я не могу использовать в XML. Когда я использую;
<com.example.A.IntegerEditTextPreference
android:defaultValue="80"
android:inputType="numberPassword"
android:key="Speed"
android:persistent="false"
android:numeric="integer"
android:maxLength="3"
android:title="Choose Speed" />
Я принимаю эту ошибку: «Элемент здесь не разрешен». Сейчас я выполняю поиск, и они говорят, что я должен использовать папку XML в Drawable, но это Preference XML, поэтому я не могу этого сделать. Что я могу сделать?
Редактировать: я добавляю свой XML-файл.
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory android:title="Notification">
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/B"
android:key="B"
android:title="B" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/A"
android:key="A"
android:title="A" />
<com.example.A.IntegerEditTextPreference
android:defaultValue="80"
android:inputType="numberPassword"
android:key="Speed"
android:persistent="false"
android:numeric="integer"
android:maxLength="3"
android:title="Choose Speed" />
</PreferenceCategory>
</PreferenceScreen>