0
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="Notifications">
    <CheckBoxPreference 
            android:key="vibration"
            android:title="Vibrate" 
            android:summary="Vibrate phone for notifications" />
    <CheckBoxPreference 
            android:key="play_tone"
            android:title="Play Ringtone" 
            android:summary="Play Ringtone for notifications" />
    <RingtonePreference
            android:key="app_ringtone"
            android:dependency="play_tone"
            android:title="Select Ringtone"
            android:ringtoneType="notification"
            android:showDefault="true"
            android:shouldDisableView="true"
            android:summary="Pick a Ringtone" />
    </PreferenceCategory>
</PreferenceScreen>

これは私の好みのxmlです。だが、

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.getString("app_ringtone", null);

常にnullを返します。デバイス(HTC Wildfire)でデバッグしています。

4

3 に答える 3

3

私の場合の問題は、PreferenceActivityのonActivityResultをオーバーライドし、super.onActivityResult(...)を呼び出さなかったことです。今では正常に動作します:

public synchronized void onActivityResult(final int requestCode,
    int resultCode, final Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
}
于 2012-05-18T06:18:30.867 に答える
2

これは、着信音を含む設定の収集を示すサンプルプロジェクトです。これがデバイスで機能しない場合は、デバイスとの互換性の問題がある可能性があります。

于 2010-09-30T17:20:57.447 に答える
1

問題のあるXML:

<activity android:name="Activity1" 
    android:label="Activity 1"/>
<activity android:name="Activity2" 
    android:label="Activity 2" />
<activity android:name="Settings"  
    android:label="Settings" />

すべてのアクティビティでandroid:name = "Activity1"android:name = " 。Activity1"に変更すると、コードが機能し始めました。android:showSilent = "false"属性がRingtonePreferenceに含まれている場合も、コードが誤動作します。これはバグである可能性があります。たくさんの試行錯誤の末、私はこれを理解しました。どんなアイデアでも、plsは@Commonswareを啓発します。

動作するXML:

<activity android:name=".Activity1" 
    android:label="Activity 1"/>
<activity android:name=".Activity2" 
    android:label="Activity 2" />
<activity android:name=".Settings"  
    android:label="Settings" />
于 2010-10-11T08:36:02.547 に答える