Android アプリ設定画面を作成するで作成したxmlレイアウトにEditTextPreferenceを追加します。
※キーはres/values/ids.xmlでname=textbox,value=textboxで設定しています。
※タイトル、要約はベタ書きしていますがres/values/strings.xmlで設定します。
EditTextPreferenceを数値のみ入力可能にしたり、入力文字数を制限するには、xmlレイアウトのxmlを直接変更します。
以下ではandroid:inputType="number"で数値のみの入力、android:maxLength="5"で5バイトの入力制限をかけています。
<EditTextPreference android:key="@string/textbox" android:summary="テキストボックス要約" android:title="テキストボックスタイトル" android:inputType="number" android:maxLength="5"> </EditTextPreference>
PreferenceActivityを継承したアクティビティのonCreate()メソッドでは、addPreferencesFromResource()メソッドでxmlを読み込みます。
EditTextPreferenceで入力チェックを行うには
Context#findPreference()メソッドで、xmlレイアウトで設定したキーの値をもとにEditTextPreferenceインスタンスを取得します。
このEditTextPreferenceインスタンスにOnPreferenceChangeListenerをハンドルします。
package my.study.android; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.Preference.OnPreferenceChangeListener; public class MainActivity extends PreferenceActivity { // テキストボックスPreferenceの PreferenceChangeリスナー private OnPreferenceChangeListener editTextPreference_OnPreferenceChangeListener = new OnPreferenceChangeListener(){ @Override public boolean onPreferenceChange(Preference preference, Object newValue) { return editTextPreference_OnPreferenceChange(preference,newValue); }}; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //xmlレイアウトの読み込み this.addPreferencesFromResource(R.xml.pref); // キーを基に、テキストボックス設定のインスタンスを取得する CharSequence cs = getText(R.string.textbox); EditTextPreference etp = (EditTextPreference)findPreference(cs); // リスナーを設定する etp.setOnPreferenceChangeListener(editTextPreference_OnPreferenceChangeListener); } private boolean editTextPreference_OnPreferenceChange(Preference preference, Object newValue){ String input = newValue.toString(); if (input != null && Integer.parseInt(input) > 100){ //nullでなく100以上であれば要約を変更する preference.setSummary(input); return true; } else { //nullまたは100以下はエラー return false; } } }
【関連項目】
Android プリファレンスの編集
Android アプリ設定画面を作成する
Android アプリ設定画面を作成する CheckBoxPreference
Android アプリ設定画面を作成する EditTextPreference
Android アプリ設定画面を作成するRingtonePreference
Android アプリ設定画面を作成するListPreference
Android アプリ設定画面を作成する 依存関係を設定する
Android アプリ設定画面を作成する PreferenceScreen
Androidアプリ設定画面を作成する PreferenceScreen(別アクティビティ)
1 件のコメント:
inputType,maxLength…。
こんなのあったんですね。
数値入力に限定するのに
PreferenceにsetOnClickListenerで
EditText付きのDialog作ろうとしてました。
ありがとうございました。
コメントを投稿