カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

設定画面の説明文を設定内容によって変更する

例としてEditTextPreferenceの設定がされていればSummaryに表示するようにします。

リスナーをimplementsする場合

public class Setting extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref);

        PreferenceScreen ps = getPreferenceScreen();
        EditTextPreference ep = (EditTextPreference)ps.findPreference("key");
        if(ep.getText() != null && !ep.getText().equals("")) ep.setSummary(ep.getText());
    }

    @Override
    protected void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

        if(key.equals("key")) {
            PreferenceScreen ps = getPreferenceScreen();
            EditTextPreference ep = (EditTextPreference)ps.findPreference("key");
            if(ep.getText() != null && !ep.getText().equals("")) {
                ep.setSummary(ep.getText());
            } else {
                ep.setSummary("デフォルトのSummary");
            }
        }
    }

}

続きを読む…»

4,263 views

データを保存する SharedPreferences

SharedPreferencesを使えば設定内容など、保存したいデータを簡単に保存できます。
設定画面を用意したい場合は設定を保存する [Preference]を参照してください。

今回は、アクティビティなしのデータ保存です。
データ用のクラスを作成し、保存・読み出しのメソッドを記述します。

データはキーと値をセットにし、shared_prefフォルダーにXML形式で保存されます。
ディレクトリについてはファイル入出力を参照してください。
続きを読む…»

2,527 views

設定項目を無効にする Preference

PreferenceActivityのonCreateで処理します。
例では条件を何も指定していませんが、任意に条件を指定して実装してください。

例)チェックボックスの設定項目を無効化

PreferenceScreen prefScreen = getPreferenceScreen();
CheckBoxPreference checkboxPreference = 
    (CheckBoxPreference)prefScreen.findPreference("key");
checkboxPreference.setEnabled(false);

子項目として親項目と依存関係を持たせる場合

PreferenceScreen prefScreen = getPreferenceScreen();
CheckBoxPreference checkboxPreference = 
    (CheckBoxPreference)prefScreen.findPreference("key");
checkboxPreference.setDependency("親項目のkey");

xmlで指定

android:dependency="親項目のandroid:key"
9,400 views