3

私はすでに、などのいくつかの設定でEditTextPreference作業しましたが、それらはすべて機能しますが、今はを使用する必要があり、RingtonePreference正しく機能しません。非常に単純なコードは次のとおりです。

  <RingtonePreference
     android:key="my_ringtone_key"
     android:title="Select ringtone"
     />

この設定をクリックすると、id着信音を選択するためのダイアログを開きますが、保存されません。つまり、着信音を選択し、[OK]を押してから、この設定をもう一度クリックしても、着信音は選択されていません。

次のように、コードから値を取得しようとすると、次のようになります。

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        String tmp = prefs.getString("my_ringtone_key", "none");

次にtmp、デフォルト値を「none」にします。これは、値が完全にに格納されないことを意味しますSharedPreferences

しかし:私がに変更RingtonePreferenceした場合EditTextPreference、すなわち次のように:

  <EditTextPreference
     android:key="my_ringtone_key"
     android:title="Select ringtone"
     />

その後、すべてが機能します。値を編集でき、値が保存されます。もちろん、コードから取得できます。

私はAPIレベル7を使用しています。これをエミュレーターと2つのデバイス、SEXperiaNeoといくつかのAcerでテストしました。

では、どうやっRingtonePreferenceて仕事に取り掛かるのですか?RingtonePreferenceそして、あなたのために働くかどうかコメントを追加してください。

4

2 に答える 2

2

マニフェストの影響を受けるエントリからnoHistory="true"、、、android:launchMode="singleInstance"および/またはを削除してみてください。android:excludeFromRecents="true"<activity>

launchModeエントリは私の問題を解決しました。これらのソリューションが最近回答として投稿されているのを見つけました here

于 2013-06-12T00:24:48.010 に答える
0

同じ問題がありました。私の間違いは、選択した着信音が保存される場所であるsuper.onActivityResultを呼び出さずに、PreferenceFragment の onActivityResult メソッドをオーバーライドすることでした。

https://stackoverflow.com/a/10020414/213817を参照してください

于 2014-02-21T16:26:07.040 に答える