4

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

这是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>
4

6 回答 6

4

如果您已覆盖onActivityResult()并忘记调用super.onActivityResult(),您也会看到此问题。

请参阅RingtonePreference 不触发 OnPreferenceChangeListener

于 2013-08-13T12:56:47.350 回答
3

我有同样的问题。在 AndroidManifest.xml 文件中,我将偏好活动设置为noHistory="true". 一旦我删除它,一切正常。

于 2012-02-20T13:58:12.707 回答
2

我最终通过注册 aonPreferenceClickListener并获得结果来手动保存它

于 2012-07-20T19:01:58.127 回答
2

我设法通过从 AndroidManifest.xml 上的设置活动条目中删除android:launchMode="singleInstance"和解决此android:excludeFromRecents="true"问题(设置这些选项中的一个或两个将导致相同的问题)。这似乎是Android上的一个错误。

于 2013-04-08T19:32:42.887 回答
1

我使用的解决方案是由 Udo Held 提供的,我只想添加一件事,我必须删除launchMode="singleInstance"我现在正在使用 的android:launchMode="singleTask"并且一切正常。以防万一其他人需要启动模式,这个对我有用。

于 2015-05-04T22:00:27.193 回答
0

我只是遇到了同样的问题,但是当我阅读偏好时,我查看了我的代码:

SharedPreferences settings = 
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

这是错误的,正确的解决方案是:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);

希望能帮助到你

于 2012-02-10T09:47:54.637 回答