android:defaultValue在某些手机上不起作用-解决方法?
我需要在首选项XML中设置的默认值在第一次运行时可用 在某些手机中,这是可行的,但其他一些手机(例如)的行为非常奇怪 在我的特殊情况下,以下代码:android:defaultValue在某些手机上不起作用-解决方法?,android,android-preferences,galaxy,Android,Android Preferences,Galaxy,我需要在首选项XML中设置的默认值在第一次运行时可用 在某些手机中,这是可行的,但其他一些手机(例如)的行为非常奇怪 在我的特殊情况下,以下代码: String key = "@string/timeout_key" timeout = Integer.valueOf(prefs.getString(key, "10")); 保持返回默认值“10”(作为第二个参数传递给prefs.getString()),尽管首选项XML指定: android:defaultValue="5" 字符串“ti
String key = "@string/timeout_key"
timeout = Integer.valueOf(prefs.getString(key, "10"));
保持返回默认值“10”(作为第二个参数传递给prefs.getString()
),尽管首选项XML指定:
android:defaultValue="5"
字符串“timeout\u key”存在,我可以验证它是否被正确读取
我目前的“手动解决方法”是调用设置编辑器,重新键入设置并按OK
有没有一种方法可以通过编程实现这一点?该方法有缺陷,不会返回android:defaultValue
。如果读取失败,它将只返回第二个参数。要解决此问题,请将null放在第二个参数中:
timeout = Integer.valueOf(prefs.getString(key, null));
这当然会在安装应用程序后第一次调用它时引发异常,因此您要做的是将其包含在try
中,并在捕获异常时写入默认值(android中的默认值:defaultValue,最初用于android没有bug的情况下):
丑陋,但有效
try {
timeout = Integer.valueOf(prefs.getString(key, null));
}
catch (Exception e) {
Editor editor = prefs.edit();
editor.putString(key, Integer.toString(defaultValue));
editor.commit();
}