設定画面の説明文を設定内容によって変更する
- Android
-
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,450 views




