Android 铃声首选项不保存选择

Android 铃声首选项不保存选择,android,preferences,ringtone,Android,Preferences,Ringtone,我的应用程序中有一个铃声首选项,但当我选择想要的铃声时,它不会存储在首选项值中。我可以再次单击首选项,但它不会显示我刚才选择的内容 这是XML <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Audio Setti

我的应用程序中有一个铃声首选项,但当我选择想要的铃声时,它不会存储在首选项值中。我可以再次单击首选项,但它不会显示我刚才选择的内容

这是XML

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Audio Settings">
        <CheckBoxPreference 
            android:key="SMS_PREF_TTS"
            android:title="Say name of sender"
            android:summary="When a person in your contact list sends you a sms/mms message its says their name"
            android:defaultValue="false">
        </CheckBoxPreference>
        <CheckBoxPreference 
            android:key="SMS_PREF_TTS_MSG"
            android:title="Say Message"
            android:summary="Will say the message of sender from contact list"
            android:dependency="SMS_PREF_TTS"
            android:defaultValue="false">
        </CheckBoxPreference>
        <RingtonePreference 
            android:key="SMS_PREF_SOUND"
            android:title="Change Sound"
            android:ringtoneType="notification"
            android:summary="Select the notification Sound"
            android:dialogTitle="Change Sound"
            android:defaultValue="Silent">
        </RingtonePreference>
</PreferenceCategory>
</PreferenceScreen>

奇怪的是,我刚刚为我的应用程序的另一部分编写了另一个xml,它的铃声偏好看起来是一样的,但这一个很有效,所以我不明白

这是工作的

<RingtonePreference
        android:key="CAL_PREF_TONE"
        android:title="Default ringtone"
        android:summary="Select default notification ringtone"
        android:ringtoneType="notification"
        android:defaultValue="Silent"
        android:dependency="CAL_PREF_ON">
    </RingtonePreference>

我也遇到了同样的问题,但当我阅读偏好时,我回顾了我的代码:

SharedPreferences settings = 
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
这是错误的,正确的解决方案是:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);

希望能有帮助

我也有同样的问题。在AndroidManifest.xml文件中,我的首选项活动设置为
noHistory=“true”
。一旦我删除了它,一切都正常了。

我最终手动保存了它,在PreferenceClickListener上注册了一个
,并得到了结果我通过删除
android:launchMode=“singleInstance”
android:excludeFromRecents=“true”来解决这个问题
来自AndroidManifest.xml上的设置活动条目(设置其中一个或两个选项将导致相同问题)。这似乎是Android上的一个bug。

如果您覆盖了
onActivityResult()
并且忘记调用
super.onActivityResult()
,您也可以看到这个问题


请看

我使用的解决方案是由Udo Hold提供的,我只想添加一件事,我必须删除
launchMode=“singleInstance”
,我现在使用的是
android:launchMode=“singleTask”
,一切正常。为了防止其他人需要启动模式,这个模式对我有效。

我唯一能想到的是,你在其他PREF中使用了SMS\u PREF\u声音,这会覆盖你的选择。除此之外(除非你在PreferenceActivity中做了一些事情),绝对没有理由不存储它。我也尝试过更改
键,但它仍然无法保存它原来是这样的!非常感谢。