Ang*_*i H 3 android sharedpreferences
当我在用户选择首选项时尝试设置摘要时,通常会保存.但是当我的应用程序重新启动时,摘要就消失了.
这里是我的代码来设置摘要ListPreference和EditTextPreference:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){
Preference pref = findPreference(key);
// I feel the problem is happened here
if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
pref.setSummary(listPref.getEntry());
}
// Same problem here
if (pref instanceof EditTextPreference) {
EditTextPreference editText = (EditTextPreference) pref;
pref.setSummary(editText.getEntry().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
有什么不对?
Fre*_*shD 26
如果您只想显示当前条目,请尝试在xml中设置摘要:
android:summary="%s"
Run Code Online (Sandbox Code Playgroud)
这仅适用于ListPreference(参见Doc):
如果摘要中包含字符串格式标记(即"%s"或"%1 $ s"),则当前条目值将替换为其位置.
问题可能是启动时未调用侦听器(值未更改).但您可以在XML中动态设置摘要.对于a ListPreference,这是内置的,@ FreshD的答案是要走的路.扩展到f.ex. a EditTextPreference,你需要创建自己的类.例如
Run Code Online (Sandbox Code Playgroud)package your.package; import android.content.Context; import android.util.AttributeSet; public class EditTextPreference extends android.preference.EditTextPreference{ public EditTextPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public EditTextPreference(Context context, AttributeSet attrs) { super(context, attrs); } public EditTextPreference(Context context) { super(context); } @Override public CharSequence getSummary() { String summary = super.getSummary().toString(); return String.format(summary, getText()); } }并在你的xml中使用它:
Run Code Online (Sandbox Code Playgroud)<your.package.EditTextPreference android:key="pref_alpha" android:summary="Actual value: %s" android:title="Title" android:defaultValue="default" />
ListPreference listPref = (ListPreference) findPreference("listkey");
listPref.setSummary(listPref.getEntry());
EditTextPreference editText = (EditTextPreference) findPreference("edittextkey");
editText.setSummary(editText.getEntry().toString());
Run Code Online (Sandbox Code Playgroud)
如果您有密钥,请像上面一样设置摘要,在您的preferenceFragment或Activity中的addpreferences之后的oncreate中
| 归档时间: |
|
| 查看次数: |
8105 次 |
| 最近记录: |