<?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野火)上。

有帮助吗?

解决方案

下面是一个示例项目证明收集的喜好,包括手机铃声。如果这样做在装置上不工作,则有可能是兼容性问题与设备。

其他提示

在我的情况下,问题是,我在PreferenceActivity overrided onActivityResult并没有援引super.onActivityResult(...)。 现在,它工作正常:

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

    super.onActivityResult(requestCode, resultCode, data);
}

<强>有问题的XML:

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

我改变的机器人:名称= “活性1”以<强>机器人:名称=”。活性1" 的所有活动和代码开始工作。该代码还故障如果在机器人:showSilent =“假” 属性被包括在 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" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top