1

EditTextPreferences に InputFilter を適用したい...

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)});

しかし、これらの Filters を設定するために、EditTextPreference の EditTexts を参照するにはどうすればよいでしょうか?

私の新しいコード:

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

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

                 //TODO set InputFilter
}
4

3 に答える 3

8

コンスタンチンはそれをほとんど正しかった。彼の答えを彼の答えに対するセバスチャンのコメントと組み合わせると、あなたは

EditText editText1 = ((EditTextPreference) findPreference(preference_1_key))
                         .getEditText();
editText1.setFilters(new InputFilter[]{ new InputFilterMinMax(1, 30) });
于 2012-12-11T00:26:31.987 に答える
0

これが好みのアクティビティであり、id でアイテムを取得できると仮定します。

        EditTextPreference editTextPreference = findByViewId(R.id.editPref1);
        EditText editText = editTextPreference.getEditText();
        editText.setFilters(................);
于 2012-05-14T10:27:29.197 に答える
0

これはより柔軟性があります。

public class Utility {
public static void setEditTextInputFilter(EditText editText, final String blockCharacterSet) {
    InputFilter filter = new InputFilter() {

        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

            if (source != null && blockCharacterSet.contains(("" + source))) {
                return "";
            }
            return null;
        }
    };

    editText.setFilters(new InputFilter[]{filter});
}

}

使い方:

exampleEditText は、入力 "-" をブロックしたい editText です。

Utility.setEditTextInputFilter(exampleEditText, "-");
于 2016-12-23T09:16:59.577 に答える