如何使PreferenceActivity中的EditTextPreference中summary显示当前的值

原始情况下EditTextPreference中summary是显示自己设置的一个固定值,就和titile一样,常用来做一些补充说明。



但很多时候,我们会想要让summary显示当前该key的值,类似下图



当我们更改对应值后,下面summary显示的值也会跟着更改。要实现这个功能,其实只需从OnSharedPreferenceChangeListener入手就可以了。当监听到EditTextPreference更改值后,更改相应的显示。下面是相关代码

代码比较简单,也没做啥注释

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref);
        
        SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
        findPreference("key1").setSummary(sp.getString("key1", "key1_default value"));
        findPreference("key2").setSummary(sp.getString("key2", "key2_default value"));
		
    }
    
    @Override
	protected void onResume() {
	    super.onResume();
	    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener( this );
	}
	
	@Override
	protected void onPause() {
	    super.onPause();
	    getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener( this );
	}
	
	@Override
	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
		Preference pref = findPreference(key);
	    if (pref instanceof EditTextPreference) {
	        EditTextPreference etp = (EditTextPreference) pref;
	        pref.setSummary(etp.getText());
	    }
	}

相应的xml文件



    
        
        
    


附上项目文件

http://download.csdn.net/detail/daguaio_o/4544615

你可能感兴趣的:(android,preference)