我已经使用了一些首选项,如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

10-07 20:42