RingtonePreference不保存其价值(RingtonePreference doesn&

2019-09-21 10:03发布

我已经有一些偏好,比如工作EditTextPreference等,以及所有他们的工作,但现在我需要使用RingtonePreference ,它不能正常工作。 这里是非常简单的代码:

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

当我点击这个喜好,标识打开对话框,选择铃声,但它不保存它 。 我的意思是,我选择的铃声,按“确定”,然后再次单击此偏好,仍然没有铃声选择。

如果我尝试从代码中获得价值,这样的:

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

然后tmp有默认值“无”,这意味着价值完全没有存储在SharedPreferences

但是 :如果我改变RingtonePreferenceEditTextPreference ,即如下:

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

然后,所有的工作:我可以编辑值,值存储,当然我可以从代码得到它。

我使用API​​ 7级。我测试了在仿真器和两个设备,SE的Xperia neo和一些宏碁。

那么,如何获得RingtonePreference工作? 并请加评论,如果RingtonePreference不为你工作或没有。

Answer 1:

尝试删除noHistory="true"android:launchMode="singleInstance" ,和/或android:excludeFromRecents="true"从受影响的<activity>在你的清单项。

launchMode项解决了这个问题对我来说; 我发现这些解决方案最近发布的答案在这里 。



Answer 2:

我遇到过同样的问题。 我的错误是重写PreferenceFragment的onActivityResult方法,而不调用super.onActivityResult,这哪里是选择的铃声被保存。

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



文章来源: RingtonePreference doesn't save its value