我已经使用了一些首选项,如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级。
我在模拟器和两个设备上测试了这个,SexperiaNeo和一些Acer。
那么,怎样才能工作呢?
如果
RingtonePreference
对您是否有效,请添加评论。 最佳答案
尝试从清单中受影响的noHistory="true"
条目中删除android:launchMode="singleInstance"
、android:excludeFromRecents="true"
和/或<activity>
。launchMode
条目为我解决了这个问题;我发现这些解决方案最近发布为答案here。