お父さん勝手に日記見ないでよ!

日記ではないです。

androidの開発の中で分かったことの備忘録その2
EditTextPreferenceにおいて文字数制限や入力可能文字の限定を行う方法

EditTextPreferenceのメソッド
getEditText()によってEditTextのクラスを取得することにより、
様々な入力の制限をかけることが出来る。

(当然入力制限だけでなく、その他の設定も出来る。たとえばhintとか)

  //EditTextPreferenceの取得
  EditTextPreference etp = 
          (EditTextPreference)findPreference(getText(/*EditTextPreferenceのキー*/));

  //EditTextの取得
  EditText et = etp.getEditText();
  
  //入力可能文字を数字に限定
  et.setInputType(InputType.TYPE_CLASS_NUMBER);
  
  //InputFilterクラスの配列を用意。ここでは文字数制限のみ行っている。
  InputFilter[] FilterArray = new InputFilter[1];
  //4文字制限を行う場合は、コンストラクタで4を指定する
  FilterArray[0] = new InputFilter.LengthFilter(4);
  
  //作成したフィルタの適用
  et.setFilters(FilterArray);

EditTextと違ってEditTextPreferenceはXMLでの属性android:maxLengthを設定することが出来ない。
そのため上記のようにして実現した。