スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

OnPreferenceChangeListener

ListPreference の記事にて、ListPreferenceを使った設定画面を作りました。

ただ、この画面だとリストのどのアイテムを選択したのかXMLファイルを見なければわからないので不便です。選択したリストの値をサマリーで確認できるようにしましょう。

たとえば、「フェイスブック」を選択すると
20111224_2


サマリーに値が表示されます。
20111224_3


main.xmlとstrings.xmlは変更なしです。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/pref_title">
<ListPreference
android:key="@string/lp_key"
android:title="@string/lp_title"
android:summary="@string/lp_summary"
android:dialogTitle="@string/lp_dialog"
android:entries="@array/IT_Big"
android:entryValues="@array/IT_BigValues"
></ListPreference>
</PreferenceCategory>
</PreferenceScreen>



<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloAndroid</string>
<string name="hello">HelloAndroid</string>
<string name="pref_title">HelloPreference</string>
<string name="lp_key">ListPref Key</string>
<string name="lp_title">ポチッとな</string>
<string name="lp_summary">説明文</string>
<string name="lp_dialog">ダイアログのタイトルです</string>

<array name="IT_Big">
<item>
ヤフー
</item>
<item>
グーグル
</item>
<item>
フェイスブック
</item>
</array>
<array name="IT_BigValues">
<item>
Yahoo!
</item>
<item>
Google
</item>
<item>
FaceBook
</item>
</array>
</resources>



Javaファイルでは、OnPreferenceChangeListenerをセットします。

package sample.basic;

import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference;

public class HelloAndroid extends PreferenceActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.main);

//ここから↓
CharSequence cs = getText(R.string.lp_key);
ListPreference lp = (ListPreference)findPreference(cs);
lp.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
public boolean onPreferenceChange(Preference preference, Object newValue){
if(newValue != null){
preference.setSummary((CharSequence)newValue);
return true;
}
return false;
}
});
}
}



「ここから」以下の部分が追加したソースです。

まず、ListPreferenceのキーを取り出します。キーは、strings.xmlで「ListPref Key」と定義しましたね。

このキーは、RクラスでリソースIDとして管理されており、ResourcesクラスのgetText()メソッドでアクセスできます。

CharSequence getText(int id)



キーを指定してPreferenceを取得するのが PreferenceActivityクラスの findPreference()メソッドです。

Preference findPreference(CharSequence key)

ListPreferenceを返すときはキャストします。

Preferenceの値が変化したときにイベント処理を行うのが OnPreferenceChangeListenerインタフェースです。onPreferenceChange()メソッドを実装します。

abstract boolean onPreferenceChange(Preference preference, Object newValue)

引数には、変更後のPreferenceと、変更後の値が格納されます。値の変更が行われると trueが返されます。

サマリーに表示を設定するのが Preferenceクラスの setSummary()メソッドです。

void setSummary(CharSequence summary)





関連記事
スポンサーサイト

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://androidhacker.blog94.fc2.com/tb.php/95-4dc790c5
  • 閉じるボタン
レファレンス
月別アーカイブ
リンク
カテゴリ
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。