`
seya
  • 浏览: 360591 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

EditTextPreference 小记

阅读更多
今天在做项目的时候遇到一个需求,需要设置一个电话号码,并保存起来。理所当然地想到了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的源码,便分析了以下。分析后发现的确如此。
分享到:
评论

相关推荐

    PreferenceDemo

    `EditTextPreference`是`Preference`的一个子类,它提供了一个输入框让用户输入文本,并保存该文本值。本示例"PreferenceDemo"着重展示了如何在`EditTextPreference`的summary中实时显示当前用户输入的值。 首先,...

    android-sample-PreferenceActivityUITestWithEspresso

    android-sample-PreferenceActivityUITestWithEspresso 该项目是PreferenceActivity在 Android 应用程序开发中的自动化 UI 测试的示例代码。我们使用名为 Espresso 的库进行自动化 UI 测试。 建造 ...

    Android PrefereceActivity实例

    EditTextPreference editTextPref = (EditTextPreference) preference; String value = editTextPref.getValue(); // 处理用户输入 } else if (preference instanceof ListPreference) { ListPreference ...

    Android软件开发11-12[整理].pdf

    在Android开发中,PreferenceActivity配合一系列的Preference子类,如CheckBoxPreference、EditTextPreference、ListPreference和RingtonePreference,可以轻松构建各种常见的设置选项。以下是对这些组件的详细介绍...

    Android中Preference的使用以及监听事件分析

    Preference家族包括多种类型,如CheckBoxPreference(复选框)、SwitchPreference(开关按钮)、EditTextPreference(文本输入框)、ListPreference(列表选择)等。每种类型对应不同的用户交互方式,开发者可以根据...

    Android软件开发之PreferenceActivity中组件的使用

    通过使用PreferenceScreen和相关的Preference元素,开发者可以在布局XML文件中定义各种类型的偏好设置,如CheckBoxPreference、SwitchPreference、EditTextPreference等。 1. **PreferenceScreen**: 这是设置界面的...

    android实现ShowpreferencePre存储

    Preferences包括各种具体的偏好设置项,如EditTextPreference(文本输入)、CheckBoxPreference(复选框)、SwitchPreference(开关按钮)等。而PreferenceScreen则可以看作是一个包含多个Preference的容器,用于...

    第8章--Android的安全性和首选项.pptx

    PreferenceScreen 元素可以包含多个首选项项目,每个首选项项目都可以是 ListPreference、CheckBoxPreference、EditTextPreference 或 RingtonePreference 等类型。 8.4 本章小结 本章讨论了 Android SDK 的两个...

    Android Preference组件使用

    Preference主要实现一些配置数据,一些我们上次...Preference组件有ListPreference,EditTextPreference,CheckBoxPreference和SwitchPreference,相对于View中的ListView,EditText,CheckBox,Switch和RingtonePreference .

    Android中preference的使用实例代码

    通过继承或扩展Preference,我们可以创建各种类型的偏好设置,如开关按钮(CheckBoxPreference)、单选按钮(ListPreference)和文本输入框(EditTextPreference)等。 二、添加Preference到布局 首先,我们需要在...

    安卓Preference存储数据Demo

    这段XML定义了两个EditTextPreference,分别用于输入联系人姓名和电话。`key`属性用于存储数据时作为键,`title`和`summary`则分别显示在界面上。 接着,我们需要在Activity中加载这些Preferences。这通常在`...

    Preference

    "Preference" 分为不同的类型,如 CheckBoxPreference(复选框),SwitchPreference(开关),EditTextPreference(文本输入)等,每种类型对应不同的用户交互方式。 二、创建Preference XML布局 要设计“设置”...

    Preference的使用

    2. EditTextPreference:提供一个文本输入框,用户可以输入自定义数据。 3. SwitchPreference:在Android 5.0(Lollipop)之后引入,与CheckBoxPreference类似,但提供了更美观的切换开关。 4. ListPreference:展示...

    android preference framework demo

    此DEMO内含基本的android preference framework的简单介绍,包括CheckboxPreference, ...EditTextPreference以及ListPreference。主要探究了一下android 怎么通过使用preference从而达到对用户定制的数据进行保存。

    如何制作程序设置窗体

    Preference技术提供了一些专门用于设置功能的控件,例如PreferenceActivity,CheckPreference,EditTextPreference,ListPreference,以及PreferenceScreen。这些控件都是为了方便设置项的展示和用户交互而设计的。...

    Android学习笔记 Preference的使用

    `CheckBoxPreference`、`EditTextPreference`、`SwitchPreferenceCompat`等都是它的子类,分别对应不同的UI控件。 2. **添加Preference到布局**: - 使用XML布局文件来定义`Preference`节点,每个节点代表一个...

    Preference实例

    - 在xml文件中,可以定义不同类型的Preference,如CheckBoxPreference(复选框),EditTextPreference(文本输入),SwitchPreference(开关按钮)等,每个类型都有其特定的属性和行为。 - 在Activity或Fragment中...

    android Preference Demo

    2. EditTextPreference:用于用户输入文本,通常用于设置字符串类型的偏好。 3. ListPreference:显示一个下拉列表供用户选择,常用于设置有限的选项。 4. SwitchPreference:在API 21及以上版本中引入,提供了一个...

    PreferenceActivity

    在XML布局文件中,每个偏好项(如CheckBoxPreference、EditTextPreference、ListPreference等)都会被定义为一个子节点。然后在代码中,通过addPreferencesFromResource()方法加载这个XML布局,从而将这些设置项添加...

Global site tag (gtag.js) - Google Analytics