PreferenceScreen
Android アプリでいくつかのユーザー設定を設定するために使用しています。ListPreference
いくつかのアイテムで完全に機能しますが、適切に機能しCheckboxPreference
ません。RingtonePreference
適切な着信音ダイアログが表示され、選択できますが、選択内容は保存されません。
何を選択しても、私のアプリはデフォルトのサウンドしか再生しません。着信音ダイアログを再度開くと(選択した直後、またはアプリを終了して戻った後)、常にデフォルトの項目が選択されています。設定値を表示するフィールドがあり、設定画面で変更した後でも、常にデフォルトのサウンドが選択されていることが示されます。また、DDMS で監視したときに、デバイス (/data/data/myapp/shared_prefs 内) の適切な xml ファイルが変更されていないことも確認しました。他の項目 ( などCheckboxPreference
) を変更すると、shared_prefs ファイルがリアルタイムで変更されます。私は自分PreferenceScreen
を最小限に抑えましたが、それでも同じように動作します。キー名、デフォルトを変更し、携帯電話のアプリ データを消去しようとしましたが、うまくいきません。
SO に既に投稿されている 2 つの同様の質問 (こことここ) を見つけましたが、それらは数か月前のもので、回答がないか、質問をした人があきらめて別の方法を試しました。設計どおりに動作しないように見える理由を解明したいと思います..または、少なくとも、同じことを行うための適切な方法を見つけてください。
私のコードの関連部分は以下のとおりです..事前に感謝します!
/res/xml/preferences.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<RingtonePreference
android:key="alertSound"
android:ringtoneType="notification"
android:summary="Select audio notification sound"
android:title="Alert Sound" >
</RingtonePreference>
</PreferenceScreen>
/src/myapp/EditPrefsActivity.java:
public class EditPrefsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings = PreferenceManager.getDefaultSharedPreferences(this);
addPreferencesFromResource(R.xml.preferences);
}
}