首页 > 代码库 > 让Android Preference Summary中实时显示内容变更
让Android Preference Summary中实时显示内容变更
Android中提供的Preference可以保存用户的喜好设置。在启明星安卓版员工通讯录里,有一个地方保存用户输入的URL就是用的Preference。
但是Preference默认显示的是Summary的值。我们希望他们可以显示用户输入的只。
先看一下效果:
如果用户未输入,这Summary提示让用户输入
如果用户输入了,这显示用户的输入值
要实现上面的功能,
(1)增加XML配置文件
<EditTextPreference android:key="url" android:title="please enter url" > </EditTextPreference>
(2)执行OnSharedPreferenceChangeListener 接口
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(); }
如此即可。
(3)获取用户的配置值
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(); }
让Android Preference Summary中实时显示内容变更
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。