Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android:defaultValue在某些手机上不起作用-解决方法?_Android_Android Preferences_Galaxy - Fatal编程技术网

android:defaultValue在某些手机上不起作用-解决方法?

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

我需要在首选项XML中设置的默认值在第一次运行时可用

在某些手机中,这是可行的,但其他一些手机(例如)的行为非常奇怪

在我的特殊情况下,以下代码:

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();
}