- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
要在 Android 首选项中存储一个整数,我会直觉地选择 EditTextPreference
并进行通常的 String-int-String 转换。
但后来我遇到了一段代码,它在 <ListPreference>
中存储一个整数。相反:
<ListPreference
android:key="@string/total_score"
android:defaultValue="0" />
并使用 preferences.getInt(getString(R.string.total_score), 0);
检索它
这真的有用吗?如果是,怎么办?
这是否被认为是可接受的做法?
更新:感谢下面的回答,我已经找到了 getInt() 的实现源代码。 .我将其张贴在这里以供引用:
jint android::content::SharedPreferences::getInt(local_ref< java::lang::String > const &a0, jint a1)
{
return call_method<
android::content::SharedPreferences::J2CPP_CLASS_NAME,
android::content::SharedPreferences::J2CPP_METHOD_NAME(2),
android::content::SharedPreferences::J2CPP_METHOD_SIGNATURE(2),
jint
>(get_jobject(), a0, a1);
}
最佳答案
理论上,是的,您可以用 ListPreference
存储一个整数.毕竟它是一个 UI 偏好,它将用户显示的标签/键 ( android:entries
) 映射到内部值 ( android:entryValues
) 并在 ListView 中显示所有这些映射选项。该内部值也可能是一个整数。你可以使用 <integer-array>
-entryValues 的资源。
在实践中,我从未见过这样的工作 - 它是 bugged .
当然,你可以给ListPreference
的preference key设置一个int值。在您的代码中,因为这是内部的正常偏好。但这会破坏预定义资源数组的全部目的和从列表中进行选择的能力。作为解决方法,如果 int 数组方便,我建议使用 <string-array>
对于值并在代码中将它们转换为整数,就像您对 EditTextPreference
所做的那样
检查 this question对于一个非工作示例。 ;)
要回答您的标题问题,为整数选择哪个:视情况而定。
您可以使用任何一种解决方法。
如果用户应该能够输入任何值(或只是很多值),EditTextPreference
是要走的路。 ListPreference
会太长。
如果您有一小部分预定义整数,请使用 ListPreference
.这样使用起来更舒适,并且可能会显示有用的标签。示例:如果用户应该选择时间间隔,您可以将秒映射到值中并显示不同的标签,例如一个小时 [值(value) 3600;标签“小时”]。
编辑:还知道您的代码 fragment 可能与何处相关。由于这个ListPreference
均未指定 android:entries
也不android:entryValues
,它可能只是默认首选项文件的一部分。您可以使用 PreferenceManager.setDefaultValues()
使用 XML 文件重置/初始化所有首选项键。在这种情况下,您选择哪个首选项是完全随机的,因为所有重要的字段都是 android:key
和 android:defaultValue
.在这种情况下,您可以使用任何其他类型,没关系。
关于android - 整数的偏好类别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7246924/
typedef unsigned char uChar; typedef signed char sChar; typedef unsigned short uShort; typedef signe
我正在编写一个 android 应用程序并想做一个 SettingsActivity。 我的问题是我的矢量可绘制对象不会使其颜色适应夜间或白天主题。 ic_palette_black_24dp.xml
我正在使用多语言闹钟 android 应用程序工作: 1 个 xml 文件 [alarm_settings.xml] 2 个 string.xml 文件 [英语和阿拉伯语] 问题是本地化没有以正确的方
我正在尝试创建一个 SettingsActivity 并使用扩展 PreferenceFragment 的 Fragment 来实现此目的。我的 Activity 正在显示,而首选项不是。 Setti
我知道在使用自动属性时,编译器会在屏幕后面创建自己的支持字段。然而,在我阅读以学习的许多程序中,我看到人们明确地写 private int _backingField; public int Prop
在写入事件日志时,我可以创建一个 EventLog 实例,将其作为成员变量保存,并在每次我想记录消息时对其调用 WriteEntry(string message)。 或者,我可以只调用静态版本:Ev
如何通过ListPreference值设置依赖? 最佳答案 正如 Snicolas 已经指出的那样,依赖 xml 功能仅检查 bool 状态(= 如果引用的键为真或在其中设置了值)。如果启用,您可
如果我使用 Preference API存储用户或系统偏好,它们在 Windows 和 Unix 上存储在哪里? 最佳答案 对于 Windows,systemRoot 和 userRoot 分别存储在
测试 android.preference.PreferenceActivity 时,我收到以下警告: warning: [deprecation] getFragmentManager() in A
在优先级Activity中我们可以使用这两个方法SetContentView(R.layout.main) 和 addXmlFromResources(R.xml.Preferences) 用于自定义
在我的 Android 应用程序中,我有一个偏好 Activity ,让用户可以覆盖应用程序的语言。为此,我在每个 Activity 的 onResume() 中调用此函数,然后重置内容 View :
在我的preferences.xml 中,我有一个这样的偏好元素: 我想分配 onClick 事件,所以如果用户点击它,我将能够打开新的 Intent 或浏览器。我尝试像使用按钮一样进行操作,但这似
这是我的PreferenceActivity(我的主要 Activity 的内部类) public static class TestSettings extends PreferenceActivi
对于 MVC Razor 中的简单标签,您更喜欢使用简单的 HTML 还是使用扩展方法例如 Male Or @Html.Label("male", "Male") 我觉得有时使用简单的 HTML
我有一个很奇怪的问题。当我在我的设置- Activity 中滚动时,一些复选框在不再显示时会发生变化。例如:我取消选中广告复选框,然后向下滚动,当复选框完全消失时,复选框会重置。只有当我取消选中默认值
我有一个带有 PreferenceActivity 的 Android 应用程序,其中一个首选项条目启动了我自己的 Activity 之一(“关于”屏幕)。该条目如下所示: 此外(这很重
实现“夜间主题”。我不知道如何更改 ListPreference 的背景颜色。 PreferenceActivity "day" theme PreferenceActivity night them
这个问题在这里已经有了答案: When to use ES6 class based React components vs. functional ES6 React components? (5
我在私有(private)模式下启动了 Firefox 并打开了 youtube。我看到的第一件事是根据我以前的 watch 推荐的视频。但是我没有登录,我处于私有(private)模式,为什么 yo
我试图在偏好 Activity 中展示广告,但它从未出现过。 Logcat 始终显示消息“没有足够的空间来显示广告!想要:,有:” 这就是我制作广告的方式。我对广告有自定义偏好 public clas
我是一名优秀的程序员,十分优秀!