将 UI 首选项摘要字段设置为首选项的值
对于 Android 新手来说,当用户更改首选项时,我有一些代码,我会将 UI 首选项中的“摘要”字段更新为他们输入的值。但是,当创建首选项活动时,我想将“摘要”字段设置为相应首选项中的值。 请指教。谢谢。
public class MyPreferenceActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
sp.registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
Preference pref = findPreference(key);
if (pref instanceof EditTextPreference) {
EditTextPreference etp = (EditTextPreference) pref;
pref.setSummary(etp.getText());
}
}
}
New to Android, I have some code when the user changes a preference I update the Summary field in the UI preference to be the value they entered. However, when the preference activity is created I'd like to set the Summary fields to be the values in the corresponding preferences.
Please advise. Thanks.
public class MyPreferenceActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
sp.registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
Preference pref = findPreference(key);
if (pref instanceof EditTextPreference) {
EditTextPreference etp = (EditTextPreference) pref;
pref.setSummary(etp.getText());
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我也是新手,所以可能不是最好的代码,但这与我正在做的类似。您可能想在 Resume 上注册侦听器并在 Pause 上取消注册,而不是在 Create 上。我希望这有帮助。
主要是你只需要获取首选项、首选项值并设置摘要。
I am new too so may not be the best code but this is similar to what I am doing. You probably want to register you listener onResume and unregister it onPause though rather than onCreate. I hope this helps.
Mainly you just need to grab the pref, the pref value and set the summary.
这对我有用。
This worked for me.
我通常做的是:
1 - 创建一个新类,扩展我需要显示的偏好类型(每个偏好类型 1 个)
2 - 在其代码中,执行适当的操作来显示更新的摘要
3 - 在 res/xml/preferences.xml 文件中引用此类
让我举一个小例子,非常适合 EditTextPreference:
CLS_Prefs_Edit.java
res/xml/preferences.xml
当然,在 /res/values/strings 中设置字符串,然后就可以了重做。
请注意,此解决方案适用于 PreferenceFragments 和 PreferenceActivities。
我将它用于在 2.2 Froyo(显示 PreferenceActivity)以及 4.4 KitKat(显示 PreferenceFragment)上运行的应用程序
我希望它有帮助。
What I usually do is:
1 - Make a new class which extends the kind of preference I need to show (1 per preference type)
2 - Inside its code, do the appropriate actiob to show the updated summary
3 - Refer this class in the res/xml/preferences.xml file
Let me swo a small example, good for an EditTextPreference:
CLS_Prefs_Edit.java
res/xml/preferences.xml
Of course, set your strings in /res/values/strings, and you're done.
Note that this solution works for both PreferenceFragments and PreferenceActivities.
I'm using it for an app tha runs on 2.2 Froyo (showing a PreferenceActivity) as well as on 4.4 KitKat (showing a PreferenceFragment)
I hope it helps.
首先,对于您的类:
接下来,在
onSharedPreferenceChanged
中,您有一个对sharedPreference 的引用,您可以使用它来获取首选项结果。然后您可以使用获得的最新结果来更改摘要:First, for your class:
Next, in the
onSharedPreferenceChanged
, you have a reference to the sharedPreference, which you can use to get the preference result. Then you can use the latest result you get to alter the summary: