2012-02-04 16 views
3

我想在我的喜好在总结标签屏幕来显示当前选择的值。RingtonePreference getEntry方法

对于ListPreference,我在

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 

方法使用getEntry方法,我的课是:

public class AlarmPropertiesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener 

对于EditTextPreference,我用的getText方法

我试图得到默认值RingtonePreference,但我还没有发现任何get方法。

有人帮我吗?

BR Kolesar

+0

你看看我的答案?我有和你一样的问题,并认为这是如何解决它 – 2013-07-16 05:42:32

回答

2

我有同样的问题。试图通过SharedPreferences值,但不幸的是,uri导致一个像命名文件的id。

private void updateSummary(Preference p, SharedPreferences sharedPrefs) { 
    if (p instanceof ListPreference) { 

     ListPreference listPref = (ListPreference) p; 
     p.setSummary(listPref.getEntry()); 

    } else if (p instanceof RingtonePreference) { 

     /* 
     * This is kind of a longshot, since we are not able to get the entry directly and 
     * so we have to go the route via the shared preferences. 
     */ 

     RingtonePreference ringPref = (RingtonePreference) p; 
     String ringtoneKey = ringPref.getKey(); 
     String ringtonePath = sharedPrefs.getString(ringtoneKey, ""); 
     ringPref.setSummary(ringtonePath); 

    } 
} 

的路径是这样的:内容:// /内部/音频/媒体/ 25

所以这是没有合适的解决方案。但我注意到,例如,GoogleTalk应用程序也不会显示选定的通知声音。 Googlemail电子邮件,从另一方面显示它。

8

这一个对我的作品;-)

if (pref instanceof RingtonePreference) { 

      Log.i("***", "RingtonePreference " + pref.getKey()); 
      final RingtonePreference ringPref = (RingtonePreference) pref; 
      ringPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
       @Override 
       public boolean onPreferenceChange(Preference preference, 
         Object newValue) { 
        Log.i("***", "Changed " + newValue.toString()); 
        Ringtone ringtone = RingtoneManager.getRingtone(
          SettingsActivity.this, Uri.parse((String) newValue)); 
        ringPref.setSummary(ringtone.getTitle(SettingsActivity.this)); 
        return true; 
       } 
      }); 
      String ringtonePath=pref.getSharedPreferences().getString(pref.getKey(), "defValue"); 
      Ringtone ringtone = RingtoneManager.getRingtone(
        SettingsActivity.this, Uri.parse((String) ringtonePath)); 
      ringPref.setSummary(ringtone.getTitle(SettingsActivity.this)); 

     } 
相关问题