設定画面の説明文を設定内容によって変更する
- Android
- 
                         2012-05-16                                                                                                 - 更新:2012-05-17 2012-05-16                                                                                                 - 更新:2012-05-17
この記事は最終更新日から1年以上経過しています。
                    
                    例として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");
            }
        }
    }
}
リスナーをimplementsしない場合
public class Setting extends PreferenceActivity {
    @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(listener);
    }
    @Override
    protected void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
    }
    private SharedPreferences.OnSharedPreferenceChangeListener listener =
        new SharedPreferences.OnSharedPreferenceChangeListener() {
            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,455 views 
                                                                    
                    
                








 Fedoraインストール時にごちゃごちゃになったHDの整理の... (25/02/14)
 Fedoraインストール時にごちゃごちゃになったHDの整理の... (25/02/14)