RingtonePreference不保存其值

时间:2012-08-21 09:39:37

标签: android preference

我已经处理了一些偏好设置,例如EditTextPreference等,但它们都有效,但现在我需要使用RingtonePreference,但它无法正常工作。这是非常简单的代码:

  <RingtonePreference
     android:key="my_ringtone_key"
     android:title="Select ringtone"
     />

当我点击此偏好设置时,ID 打开对话框以选择铃声,但不会保存。我的意思是,我选择铃声,按“确定”,然后再次点击此偏好,仍然没有选择铃声。

如果我试图从代码中获取价值,那就是:

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        String tmp = prefs.getString("my_ringtone_key", "none");

然后tmp的默认值为“none”,这意味着该值完全未存储在SharedPreferences中。

但是:如果我将RingtonePreference更改为EditTextPreference,即以下内容:

  <EditTextPreference
     android:key="my_ringtone_key"
     android:title="Select ringtone"
     />

然后一切正常:我可以编辑值,存储值,当然我可以从代码中获取它。

我使用API​​级别7。 我在模拟器和两个设备上测试了这个,SE Xperia Neo和一些Acer。

那么,RingtonePreference如何运作? 如果RingtonePreference对您有用,请添加评论。

2 个答案:

答案 0 :(得分:2)

尝试从清单中受影响的noHistory="true"条目中删除android:launchMode="singleInstance"android:excludeFromRecents="true"和/或<activity>

launchMode条目为我解决了问题;我发现这些解决方案最近发布为答案here

答案 1 :(得分:0)

我有同样的问题。我的错误是覆盖了PreferenceFragment的onActivityResult方法而没有调用 super.onActivityResult ,这是所选铃声被保存的地方。

请参阅https://stackoverflow.com/a/10020414/213817