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可保存用户喜好设置,如启明星安卓版员工通讯录用其保存用户输入的URL。但Preference默认显示Summary值,要显示用户输入值,可通过增加XML配置文件、执行OnSharedPreferenceChangeListener接口和获取用户配置值来实现。
679

被折叠的 条评论
为什么被折叠?



