gpt4 book ai didi

android - 在自定义 Preference 类上调用 setDefaultValue() 不会设置默认值。为什么?

转载 作者:行者123 更新时间:2023-11-29 16:25:02 25 4
gpt4 key购买 nike

我正在为我的设置屏幕扩展 PreferenceActivity。在这个偏好 Activity 中,我有几个偏好,其中一个是定制的。问题如下:

在此自定义首选项(从 ListPreference 扩展)中,我希望能够设置默认值,因此我覆盖了 setDefaultValue() 方法。在这种方法中,我做了一些解析,所以它会采用正确的值。当我尝试使用 getValue() 函数读取此值时,它只返回 null

所以我想,如果我只是把一些硬编码的值放在那里会发生什么(你知道,也许我做错了什么,这不是第一次了)。好吧,我仍然返回 null

知道我做错了什么吗?

编辑:
在 xml 文件中设置 defaultValue 并不是一个真正的选项,因为这些值在我检索它们之前是未知的。

我做了一个解决方法:

  • 应用首次启动时:获取数据
  • 在首选项中设置值。

这样我在收集数据时设置了默认偏好

最佳答案

我终于找到了the solution (在 StackOverflow 之外的某个地方,一次)。

当您创建自定义 Preference 类时,

  1. 您需要将onSetInitialValue 实现为XåpplI'-I0llwlg'I -指出
  2. 需要实现onGetDefaultValue(TypedArray a, int index)

例如,如果将自定义首选项保存为一个int,

@Override
protected void onSetInitialValue(boolean restore, Object defaultValue) {
setValue(restore ? getPersistedInt(FALLBACK_DEFAULT_VALUE) : (Integer) defaultValue);
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return a.getInteger(index, FALLBACK_DEFAULT_VALUE);
}

现在 PreferenceManager.setDefaultValues() 最后 也为自定义首选项加载了 android:defaultValue。仍然没有解决 null 和 false 问题,但有针对其他地方发布的解决方法。

关于android - 在自定义 Preference 类上调用 setDefaultValue() 不会设置默认值。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4886469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com