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" FOR ALL ACTIVITIES 并且代码开始工作。如果android:showSilent="false"属性包含在RingtonePreference中,代码也会出现故障,这可能是一个错误。经过大量的试验和错误,我发现了这一点。任何想法,请启发@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 回答