<?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)。
答案 0 :(得分:3)
在我的情况下,问题是我在PreferenceActivity中覆盖了onActivityResult并且没有调用super.onActivityResult(...)。 现在它工作正常:
public synchronized void onActivityResult(final int requestCode,
int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
答案 1 :(得分:2)
Here is a sample project展示收集偏好,包括铃声。如果这在您的设备上不起作用,则设备可能存在兼容性问题。
答案 2 :(得分: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 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" />