RingtonePreference не сохраняет свое значение

Я уже работал с некоторыми настройками, такими как EditTextPreference и т. д., и все они работают, но теперь мне нужно использовать RingtonePreference, а он не работает должным образом. Вот очень простой код:

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

Когда я нажимаю на эту настройку, идентификатор открывает диалоговое окно для выбора мелодии звонка, но не сохраняет ее. Я имею в виду, что я выбираю мелодию звонка, нажимаю «ОК», затем снова нажимаю на эту настройку, но мелодия по-прежнему не выбрана.

Если я попытаюсь получить значение из кода, например:

        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. Я тестировал это на эмуляторе и двух устройствах, SE Xperia Neo и некоторых Acer.

Итак, как заставить RingtonePreference работать? И, пожалуйста, добавьте комментарий, работает ли RingtonePreference для вас или нет.


person Dmitry Frank    schedule 21.08.2012    source источник


Ответы (2)


Попробуйте удалить noHistory="true", android:launchMode="singleInstance" и/или android:excludeFromRecents="true" из затронутой <activity> записи в манифесте.

Запись launchMode решила проблему для меня; Я нашел эти решения, недавно опубликованные как ответы здесь.

person mike47    schedule 12.06.2013

Я была такая же проблема. Моя ошибка заключалась в переопределении метода onActivityResult PreferenceFragment без вызова super.onActivityResult, где сохраняется выбранный рингтон.

см. https://stackoverflow.com/a/10020414/213817

person Steven Meliopoulos    schedule 21.02.2014