RingtonePreference は常に null です:(
-
26-09-2019 - |
質問
<?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) でデバッグしています。
解決
ここでは、収集の好みを実証するサンプルプロジェクトがあり、着メロを含みます。これはあなたのデバイス上で作業をしない場合は、デバイスとの互換性の問題がある可能性があります。
他のヒント
私の場合問題に
私はPreferenceActivityで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" />
を変更しました android:name="アクティビティ1" に android:name=".Activity1" すべてのアクティビティでコードが動作し始めました。次の場合にもコードは誤動作します。 android:showSilent="false" 属性は 着信音の設定 これはバグかもしれません。たくさんの試行錯誤の後、私はこれを見つけました。何かアイデアがございましたら、@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" />
所属していません StackOverflow