- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 XML 文件中定义了一个 PreferenceScreen,如下所示:
<PreferenceCategory android:title="Choose Days">
<PreferenceScreen android:title="Days of Week" android:key="daysOfWeek">
<CheckBoxPreference android:title="Mondays" android:key="chkMonday"></CheckBoxPreference>
<CheckBoxPreference android:title="Tuesdays" android:key="chkTuesday"></CheckBoxPreference>
<CheckBoxPreference android:title="Wednesdays" android:key="chkWednesday"></CheckBoxPreference>
<CheckBoxPreference android:title="Thursdays" android:key="chkThursday"></CheckBoxPreference>
<CheckBoxPreference android:title="Fridays" android:key="chkFriday"></CheckBoxPreference>
<CheckBoxPreference android:title="Saturdays" android:key="chkSaturday"></CheckBoxPreference>
<CheckBoxPreference android:title="Sundays" android:key="chkSunday"></CheckBoxPreference>
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="Other Settings">
<CheckBoxPreference android:title="Enable" android:defaultValue="true" android:key="enable"></CheckBoxPreference>
</PreferenceCategory>
当我点击 PreferenceScreen:daysOfWeek 时,会出现复选框,当我选中或取消选中一个框时,会触发 onSharedPreferenceChanged。
这是因为:
public class Muteny extends PreferenceActivity implements OnSharedPreferenceChangeListener {
并在我的 .java 文件中的 onResume 中注册它,并在 onPause 中注销它。
简化的 onSharedPreferenceChanged 看起来像这样:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
PreferenceScreen daysOfWeek = ((PreferenceScreen)findPreference("daysOfWeek"));
daysOfWeek.setSummary("text for summary");
Toast.makeText(this.getApplicationContext(), "Hello", Toast.LENGTH_LONG).show();
}
问题是“daysOfWeek”的摘要永远不会更新。如果我随后将 CheckBoxPreference 切换为“启用”(此时什么都不做,但会触发更改),则摘要会按照我希望在切换“日框”时执行的操作进行更新。
尽管显示了 Toast 中的消息...
选中“日期框”时如何更新 PreferenceScreen 的摘要?
最佳答案
这个问题经常出现。
您可以查看以下几个其他答案以寻找可能的解决方案。不过,我从未确定过让我 100% 满意的解决方案。
PreferenceScreen android:summary update !
Update existing Preference-item in a PreferenceActivity upon returning from a (sub)PreferenceScreen
在我见过的所有“解决方案”中,似乎效果最好的是在调用 setSummary(...) 之后调用 onContentChanged()。关于这样做是否安全存在一些争论。
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.startsWith("chk")) {
PreferenceScreen prefscreen = ((PreferenceScreen)findPreference("daysOfWeek"));
prefscreen.setSummary(key);
onContentChanged();
}
}
关于android - onSharedPreferenceChanged 问题中的 setSummary(txt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499976/
方法onSharedPreferenceChanged进入无限循环。我不明白为什么更改首选项会导致事件再次触发。 @Override public void onSharedPrefe
因此,当首选项更改时,我尝试更新timers.java 类中的值。这是我的timers.java中的值 final boolean soundEnabledPref = sharedPref.getB
我有一个非常标准的 PreferenceFragment 使用 @Override public void onCreate(Bundle savedInstanceState) { supe
我最近将 HoloEverywhere 库从 GitHub 导入到 Eclpse 中,并开始在已经运行的应用程序中使用它。总的来说,我对图书馆很满意,一切进展顺利。 我正在尝试使用 org.holoe
我对这个方法有一个奇怪的问题。它被称为,当我编辑 EditTextPreference 时,只有当我更改值时,并且只有在我第一次更改时才在 MultiSelectListPreference 上。这是
我的首选项都会在更改时触发 onSharedPreferenceChanged 事件。它适用于所有首选项:复选框、列表、自定义等。但如果我从 RingtonePreference 中选择铃声,则不会调
我设置了几个 CheckBoxPreferences,我的偏好类扩展了 PreferenceActivity 并实现了 OnSharedPreferenceChangeListener这就是我用来回应
尝试按照 http://developer.android.com/guide/topics/ui/settings.html 中给出的示例进行操作但发现很难,因为它会在使用和不使用 fragment
创建首选项 Activity 后,我注意到尽管调用了 onSharedPreferenceChanged,但当我的复选框首选项被选中时,我的主要 Activity 并没有改变主题。有谁知道出了什么问题
onSharedPreferenceChanged调用后如何重启应用? ActivityPreferences.java: [..] public static class FragmentPrefe
我想在用户从我的 preferenceActivity 中的 ListPreference 中选择特定项目时显示一个对话框。但是,我无法让 onSharedPreferenceChanged() 工作
onSharedPreferenceChanged() 监听器没有要返回的 bool 类型,而 onPreferenceChanged() 监听器有。 那么如何在验证后拒绝更改? 我想到的唯一方法是将
我有一个偏好 Activity ,起初当我有一个偏好时,onPreferenceChange 会按预期触发一次。 但是,一段时间后(去不同的 Activity 等) onPreferenceChang
我有一个单例类,它注册了一个偏好更改监听器,例如: PreferenceManager.getDefaultSharedPreferences(context.getApplicationContex
我有一个 PreferenceScreen,其中有一个 CheckBox Preference 和一个调用自定义对话框的简单 Preference。在此自定义对话框中,用户可以选择一个数字。通过在此对
我在 XML 文件中定义了一个 PreferenceScreen,如下所示:
我遇到了 SharedPreferences 及其监听器的奇怪行为。我在我的应用程序中只使用一个 SharedPreference 实例,我使用 PreferenceManager.getDefaul
因此,我尝试使用共享首选项中的 onSharedPreferenceChanged 在 Activity 之间传递对象: 在一个 Activity 类中,我这样调用首选项: mPrefs = Pre
我有一个子屏幕: 我在中实例化首选项 public class GamePreferenceActivity extends PreferenceActivity
我通过读取文本文件并解析它来加载一组新设置。 对于在那里找到的每个设置,我都提取值并更新相应的首选项(无论是 CheckPreference、ListPreference 还是 EditTextPre
我是一名优秀的程序员,十分优秀!