Dmitry Frank
Dmitry Frank

Reputation: 10757

RingtonePreference doesn't save its value

I already worked with some preferences, such as EditTextPreference, etc, and all they work, but now I need to use RingtonePreference, and it does not work properly. Here's very simple code:

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

When I click on this preference, id does open dialog to select ringtone, but it does not save it. I mean, I select ringtone, press "ok", then click this preference again, and still no ringtone selected.

If I try to get value from code, like that:

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

Then tmp have default value "none", which means that value completely isn't stored in SharedPreferences.

BUT: if I change RingtonePreference to EditTextPreference, i.e. the following:

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

Then all works: I can edit the value, value is stored, and of course I can get it from code.

I use API level 7. I tested this on emulator and two devices, SE Xperia Neo and some Acer.

So, how get RingtonePreference to work? And please add comment if RingtonePreference does work for you or not.

Upvotes: 3

Views: 850

Answers (2)

Steven Meliopoulos
Steven Meliopoulos

Reputation: 4768

I had the same issue. My mistake was overriding the PreferenceFragment's onActivityResult method without calling super.onActivityResult, which is where the selected ringtone gets saved.

see https://stackoverflow.com/a/10020414/213817

Upvotes: 0

mike47
mike47

Reputation: 2264

Try removing noHistory="true", android:launchMode="singleInstance", and/or android:excludeFromRecents="true" from the affected <activity> entry in your manifest.

The launchMode entry solved the problem for me; I found these solutions recently posted as answers here.

Upvotes: 2

Related Questions