将InputFilter应用于

将InputFilter应用于

我想将InputFilter应用于我的EditTextPreferences ...

在使用PreferenceActivity之前,我有带有以下过滤器的EditTexts:

            et1 = (EditText) findViewById(R.id.editText1);
            et2 = (EditText) findViewById(R.id.ETminsim);
            et3 = (EditText) findViewById(R.id.ETdelay);

            et1.setText(Integer.toString(PlotView.playlist_size), EditText.BufferType.EDITABLE);

            et2.setText(Integer.toString(conversorToInt(PlotView.min_sim)), EditText.BufferType.EDITABLE);
            et3.setText(Integer.toString(MusicService.getSeek()/1000), EditText.BufferType.EDITABLE);

            et1.setFilters(new InputFilter[]{ new InputFilterMinMax(1, 30)});
            et2.setFilters(new InputFilter[]{ new InputFilterMinMax(0, 100)});
            et3.setFilters(new InputFilter[]{ new InputFilterMinMax(0, 300)});


但是,为了设置这些过滤器,如何引用EditTextPreference的EditTexts?

我的新代码:

public void onCreate(Bundle bundle) {
                 super.onCreate(bundle);

                 getPreferenceManager().setSharedPreferencesName(Singleton.PREFS_NAME);
                 addPreferencesFromResource(R.xml.prefs);

                 //TODO set InputFilter
}

最佳答案

Konstantin基本上是正确的。结合他的回答和塞巴斯蒂安对他的回答的评论,您会得到

EditText editText1 = ((EditTextPreference) findPreference(preference_1_key))
                         .getEditText();
editText1.setFilters(new InputFilter[]{ new InputFilterMinMax(1, 30) });

07-24 15:46