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作ろうとしてました。
ありがとうございました。
コメントを投稿