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(); }