今天在做项目的时候遇到一个需求,需要设置一个电话号码,并保存起来。理所当然地想到了SharedPreference,在UI上需要显示一行电话号码,点击后弹出电话号码的编辑框,编辑后保存,然后编辑框关闭,当前页面的号码要刷新为编辑后的号码。查阅了下doc,发现android.preference.EditTextPreference能满足我的需要,即用之。
一开始代码如下:
public class CusSerSetting extends PreferenceActivity{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setPreferenceScreen(createPreferenceHierarchy());
}
private PreferenceScreen createPreferenceHierarchy() {
// Root
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
// Dialog based preferences
PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);
dialogBasedPrefCat.setTitle(R.string.tel);
root.addPreference(dialogBasedPrefCat);
// Edit text preference
final EditTextPreference editTextPref = new EditTextPreference(this);
editTextPref.setDialogTitle(R.string.tel);
editTextPref.setKey("SEYA_KEY");
editTextPref.setTitle(R.string.tel);
//get saved tel number and set it to current text view.
editTextPref.setSummary(editTextPref.getText());
dialogBasedPrefCat.addPreference(editTextPref);
editTextPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
editTextPref.setSummary(newValue.toString());
return true;
}
}
);
return root;
}
}
实际运行时却发现进入该页面的时候取不到之前存储的号码,但在弹出框里面却能够显示之前存储的号码。经过几次三番的调试,发现是取值时间的问题,把editTextPref.setSummary(editTextPref.getText());
放在dialogBasedPrefCat.addPreference(editTextPref);之后调用就好了。感觉是在addPreference(...)之后editTextPref才获取到text的值的。正好手边有android sdk的源码,便分析了以下。分析后发现的确如此。
分享到:
相关推荐
`EditTextPreference`是`Preference`的一个子类,它提供了一个输入框让用户输入文本,并保存该文本值。本示例"PreferenceDemo"着重展示了如何在`EditTextPreference`的summary中实时显示当前用户输入的值。 首先,...
android-sample-PreferenceActivityUITestWithEspresso 该项目是PreferenceActivity在 Android 应用程序开发中的自动化 UI 测试的示例代码。我们使用名为 Espresso 的库进行自动化 UI 测试。 建造 ...
EditTextPreference editTextPref = (EditTextPreference) preference; String value = editTextPref.getValue(); // 处理用户输入 } else if (preference instanceof ListPreference) { ListPreference ...
在Android开发中,PreferenceActivity配合一系列的Preference子类,如CheckBoxPreference、EditTextPreference、ListPreference和RingtonePreference,可以轻松构建各种常见的设置选项。以下是对这些组件的详细介绍...
Preference家族包括多种类型,如CheckBoxPreference(复选框)、SwitchPreference(开关按钮)、EditTextPreference(文本输入框)、ListPreference(列表选择)等。每种类型对应不同的用户交互方式,开发者可以根据...
通过使用PreferenceScreen和相关的Preference元素,开发者可以在布局XML文件中定义各种类型的偏好设置,如CheckBoxPreference、SwitchPreference、EditTextPreference等。 1. **PreferenceScreen**: 这是设置界面的...
Preferences包括各种具体的偏好设置项,如EditTextPreference(文本输入)、CheckBoxPreference(复选框)、SwitchPreference(开关按钮)等。而PreferenceScreen则可以看作是一个包含多个Preference的容器,用于...
PreferenceScreen 元素可以包含多个首选项项目,每个首选项项目都可以是 ListPreference、CheckBoxPreference、EditTextPreference 或 RingtonePreference 等类型。 8.4 本章小结 本章讨论了 Android SDK 的两个...
Preference主要实现一些配置数据,一些我们上次...Preference组件有ListPreference,EditTextPreference,CheckBoxPreference和SwitchPreference,相对于View中的ListView,EditText,CheckBox,Switch和RingtonePreference .
通过继承或扩展Preference,我们可以创建各种类型的偏好设置,如开关按钮(CheckBoxPreference)、单选按钮(ListPreference)和文本输入框(EditTextPreference)等。 二、添加Preference到布局 首先,我们需要在...
这段XML定义了两个EditTextPreference,分别用于输入联系人姓名和电话。`key`属性用于存储数据时作为键,`title`和`summary`则分别显示在界面上。 接着,我们需要在Activity中加载这些Preferences。这通常在`...
"Preference" 分为不同的类型,如 CheckBoxPreference(复选框),SwitchPreference(开关),EditTextPreference(文本输入)等,每种类型对应不同的用户交互方式。 二、创建Preference XML布局 要设计“设置”...
2. EditTextPreference:提供一个文本输入框,用户可以输入自定义数据。 3. SwitchPreference:在Android 5.0(Lollipop)之后引入,与CheckBoxPreference类似,但提供了更美观的切换开关。 4. ListPreference:展示...
此DEMO内含基本的android preference framework的简单介绍,包括CheckboxPreference, ...EditTextPreference以及ListPreference。主要探究了一下android 怎么通过使用preference从而达到对用户定制的数据进行保存。
Preference技术提供了一些专门用于设置功能的控件,例如PreferenceActivity,CheckPreference,EditTextPreference,ListPreference,以及PreferenceScreen。这些控件都是为了方便设置项的展示和用户交互而设计的。...
`CheckBoxPreference`、`EditTextPreference`、`SwitchPreferenceCompat`等都是它的子类,分别对应不同的UI控件。 2. **添加Preference到布局**: - 使用XML布局文件来定义`Preference`节点,每个节点代表一个...
- 在xml文件中,可以定义不同类型的Preference,如CheckBoxPreference(复选框),EditTextPreference(文本输入),SwitchPreference(开关按钮)等,每个类型都有其特定的属性和行为。 - 在Activity或Fragment中...
2. EditTextPreference:用于用户输入文本,通常用于设置字符串类型的偏好。 3. ListPreference:显示一个下拉列表供用户选择,常用于设置有限的选项。 4. SwitchPreference:在API 21及以上版本中引入,提供了一个...
在XML布局文件中,每个偏好项(如CheckBoxPreference、EditTextPreference、ListPreference等)都会被定义为一个子节点。然后在代码中,通过addPreferencesFromResource()方法加载这个XML布局,从而将这些设置项添加...