android : 默认值对某些手机-变通方法不工作吗?

发布时间: 2014/9/3 2:40:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

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

在一些手机这工作,但某些其他手机 (比如三星) 表现得非常奇怪。

在我特定的情况下,下面的代码:

String key = "@string/timeout_key"
timeout = Integer.valueOf(prefs.getString(key, "10"));

保持返回 (到 timeout ) 默认值为"10"(作为第二参数与传递 prefs.getString() ),虽然首选项 XML 指定:

android:defaultValue="5"

存在字符串"timeout_key",我可以验证它正确读取。

我"手动解决方法"目前是要调用 settings 编辑器中,重新键入该设置,按确定。

有没有办法做到这一点以编程方式吗?

解决方法 1:

SharedPreferences.getString()方法是越野车,不会返回 android:defaultValue 。如果读取失败,它将只返回第二个参数。要变通解决此问题,把在第二个参数:

timeout = Integer.valueOf(prefs.getString(key, null));

当然,这将引发一个异常第一 time 你叫它后安装应用程序,所以你做的是用双引号将它在 try 时捕获异常,写您的默认 (中的一个你 android : 默认值,原本打算如果使用 Android 不是越野车):

try {
  timeout = Integer.valueOf(prefs.getString(key, null));
}
catch (Exception e) {
  Editor editor = prefs.edit();
  editor.putString(key, Integer.toString(defaultValue));
  editor.commit();
}

丑陋的东西,但工程。

赞助商