EditTextPreferenceを拡張する

EditTextPreferenceをそのまま使いたくないこともあるわけです。
例えば、Preferenceに永続化させるときは文字列を暗号化さたい、とか。

そんな時はEditTextPreferenceをextendsしてonPrepareDialogBuilder()をオーバーライドしちゃえばいいわけです。
こんな感じ。
※値は"CCC"として保存するけど、EditTextに表示する際には"CCC converted"と表示して、保存するときは再び"CCC"で保存。
これに暗号化と復号化を組み合わせればいいわけですね。


@Override
protected void onPrepareDialogBuilder(Builder builder) {
super.onPrepareDialogBuilder(builder);

// get value from xml file
String value = getText();
Log.d(TAG, "value : " + value);

// convert value
value = value + " converted";

// display converted value
this.getEditText().setText(value);

// event handler when select ok button
builder.setPositiveButton(
android.R.string.ok,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// re-convert value and save to xml
setText("CCC");
}

});
}

コメント

このブログの人気の投稿

Joinノードを使う(その1)

Execノードを使う

Joinノードを使う(その4)