3

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

但是:如果我更改RingtonePreferenceEditTextPreference,即以下内容:

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

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

我使用 API 级别 7。我在模拟器和两个设备(SE Xperia Neo 和一些 Acer)上进行了测试。

那么,怎么RingtonePreference上班呢?如果RingtonePreference对您有用,请添加评论。

4

2 回答 2

2

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

launchMode条目为我解决了问题;我发现这些解决方案最近在此处作为答案发布。

于 2013-06-12T00:24:48.010 回答
0

我遇到过同样的问题。我的错误是在没有调用super.onActivityResult的情况下覆盖了 PreferenceFragment 的 onActivityResult 方法,这是保存所选铃声的地方。

https://stackoverflow.com/a/10020414/213817

于 2014-02-21T16:26:07.040 回答