package dummydomain.yetanothercallblocker.preference; import android.content.Context; import android.content.res.TypedArray; import android.text.InputType; import android.text.TextUtils; import android.util.AttributeSet; import androidx.preference.EditTextPreference; public class IntEditTextPreference extends EditTextPreference { public IntEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); setListener(); } public IntEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setListener(); } public IntEditTextPreference(Context context, AttributeSet attrs) { super(context, attrs); setListener(); } public IntEditTextPreference(Context context) { super(context); setListener(); } @Override protected Object onGetDefaultValue(TypedArray a, int index) { return a.getInt(index, 0); } @Override protected void onSetInitialValue(Object defaultValue) { int defaultInt = defaultValue != null ? (int) defaultValue : 0; setText(String.valueOf(getPersistedInt(defaultInt))); } @Override protected boolean persistString(String value) { return persistInt(!TextUtils.isEmpty(value) ? Integer.parseInt(value) : 0); } private void setListener() { setOnBindEditTextListener(editText -> editText.setInputType(InputType.TYPE_CLASS_NUMBER)); } }