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

onPreferenceClickListener登録して結果を取得することで手動で保存することになりました

于 2012-07-20T19:01:58.127 に答える
1

私が使用したソリューションは Udo Held によって提供されました。1 つ追加したかっただけで、削除する必要がlaunchMode="singleInstance"あり、現在使用して android:launchMode="singleTask"おり、すべて正常に動作します。他の誰かが launchMode を必要とする場合に備えて、これは私にとってはうまくいきました。

于 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 に答える