Android中提供的Preference能够保存用户的喜爱设置。在启明星安卓版员工通信录里,有一个地方保存用户输入的URL就是用的Preference。android
可是Preference默认显示的是Summary的值。咱们但愿他们能够显示用户输入的只。ide
先看一下效果:this
若是用户未输入,这Summary提示让用户输入url
若是用户输入了,这显示用户的输入值xml
要实现上面的功能,blog
(1)增长XML配置文件接口
<EditTextPreference android:key="url" android:title="please enter url" > </EditTextPreference>
(2)执行OnSharedPreferenceChangeListener 接口get
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { private EditTextPreference url; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.c21preference); url = (EditTextPreference)getPreferenceScreen().findPreference("url"); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { /* get preference */ if(key.equals("url")) { InitTextSummary(); } } public void InitTextSummary() { if(url.getText().equals("")) { url.setSummary("请输入接口地址,例如 http://demo.dotnetcms.org/worklog/"); } else { url.setSummary(url.getText()); } } @Override public void onResume() { super.onResume(); InitTextSummary(); getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); super.onPause(); }
如此便可。it
(3)获取用户的配置值io
public void Read(View view){ // SharedPreferences settings = getSharedPreferences("c21preference", MODE_PRIVATE); // String txt=settings.getString("ringtone", "xxx"); // Toast.makeText(getApplicationContext(),txt, Toast.LENGTH_SHORT).show(); SharedPreferences settings=PreferenceManager.getDefaultSharedPreferences(this); String txt=settings.getString("url", "xxx"); Toast.makeText(getApplicationContext(),txt, Toast.LENGTH_SHORT).show(); }