Android - no getEditText method in EditTextPreference with preference support library

I just had to switch to using PreferenceFragmentCompat to implement permission checking, which means using the support version of EditTextPreference. Unfortunately, it seems that getEditText is missing. Is there any work around?

Update Found this issue . This seems to have been intentionally deleted, but the answer does not explain how to implement what I want to do.

The code I used is as follows

final EditText editTextTL; editTextTL = ((EditTextPreference) findPreference("my_preference")).getEditText(); editTextTL.setFilters(new InputFilter[]{new NumericRangeFilter()}); editTextTL.setOnFocusChangeListener(new AmountOnFocusChangeListener()); 

My corresponding import

 import android.support.v7.preference.EditTextPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceFragmentCompat; 

My Gradle Dependencies

 compile 'com.android.support:support-v4:23.0.1' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:preference-v14:23.0.1' compile 'com.android.support:recyclerview-v7:23.0.1' 
+6
source share
2 answers

Create your own EditTextPreference parameter:

 public class CustomEditTextPreference extends EditTextPreference { public CustomEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } public CustomEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public CustomEditTextPreference(Context context, AttributeSet attrs) { super(context, attrs); } public CustomEditTextPreference(Context context) { super(context); } } 

Declare it in the xml file for preferences:

 <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <com.example.CustomEditTextPreference android:key="test_key" android:title="Title" /> </PreferenceScreen> 

Update your PreferenceFragmentCompat with the following lines:

 public class PrefFragment extends PreferenceFragmentCompat { private static final String DIALOG_FRAGMENT_TAG = "android.support.v7.preference.PreferenceFragment.DIALOG"; @Override public void onCreatePreferences(Bundle bundle, String s) { addPreferencesFromResource(R.xml.settings); } @Override public void onDisplayPreferenceDialog(Preference preference) { // check if dialog is already showing if (getFragmentManager().findFragmentByTag(DIALOG_FRAGMENT_TAG) != null) { return; } DialogFragment f = null; if (preference instanceof CustomEditTextPreference) { f = EditTextPreferenceDialog.newInstance(preference.getKey()); } else { super.onDisplayPreferenceDialog(preference); } if (f != null) { f.setTargetFragment(this, 0); f.show(getFragmentManager(), DIALOG_FRAGMENT_TAG); } } public static class EditTextPreferenceDialog extends EditTextPreferenceDialogFragmentCompat { public static EditTextPreferenceDialog newInstance(String key) { final EditTextPreferenceDialog fragment = new EditTextPreferenceDialog(); final Bundle b = new Bundle(1); b.putString(ARG_KEY, key); fragment.setArguments(b); return fragment; } @Override protected void onBindDialogView(View view) { super.onBindDialogView(view); ((EditText)view.findViewById(android.R.id.edit)).setFilters(new InputFilter[]{new NumericRangeFilter()}); } } 

}

0
source

getEditText () is not in the support library

check the link https://github.com/consp1racy/android-support-preference/blob/master/library/src/main/java/net/xpece/android/support/preference/EditTextPreference.java

You can get EditText,

check your support library version

-1
source

All Articles