我已经处理了一些偏好设置,例如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
对您有用,请添加评论。
答案 0 :(得分:2)
尝试从清单中受影响的noHistory="true"
条目中删除android:launchMode="singleInstance"
,android:excludeFromRecents="true"
和/或<activity>
。
launchMode
条目为我解决了问题;我发现这些解决方案最近发布为答案here。
答案 1 :(得分:0)
我有同样的问题。我的错误是覆盖了PreferenceFragment的onActivityResult方法而没有调用 super.onActivityResult ,这是所选铃声被保存的地方。