2011-10-20 63 views
2

我需要在偏好XML中设置的默认值在第一个运行。android:defaultValue无法在某些手机上工作 - 解决方法?

在一些电话中这可以工作,但其他一些电话(例如Samsung)表现得非常奇怪。

以我特定情况下,以下代码:

保持返回(到timeout)“10”(作为第二参数prefs.getString()传递)的默认值,虽然偏好XML指定:

android:defaultValue="5" 

字符串“timeout_key”存在,我可以验证它是否正确读取。

我的“手动解决方法”当前是调用设置编辑器,重新输入设置,然后按确定。

有没有办法做到这一点编程?

回答

2

SharedPreferences.getString()方法有问题,不会返回android:defaultValue。如果读取失败,它将只返回第二个参数。要解决这个问题,把在第二PARAM:

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

这当然会抛出异常你第一次把它安装应用程序后,所以你要做的就是其封装在一个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(); 
} 

丑陋,但是作品。

+0

令人难以置信。感谢您的诀窍,我现在就开始运行。 – ateiob

相关问题