首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从EditTextPreference获取更新的文本值-它获取旧值

如何从EditTextPreference获取更新的文本值-它获取旧值
EN

Stack Overflow用户
提问于 2013-06-17 07:49:26
回答 3查看 4.7K关注 0票数 1

我正在尝试使用EditTextPreference设置新密码。在这个Android4.0.3中,点击EditTextPreference会打开一个对话框窗口,用户可以在其中输入文本。但是,在按ok时,它仍然显示旧的文本值,而不是新输入的值。

代码语言:javascript
复制
public class MyPreferencesActivity extends PreferenceActivity {

EditTextPreference edp_password = (EditTextPreference) findPreference("pref_key_account_password");

edp_password.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
        public boolean onPreferenceChange(Preference preference, Object newValue) {
             String password = edp_password.getText();
            Log.v(TAG, "Password is: " + password);
            return true;
        }
    });

我花了一段时间尝试让它工作,但找不到任何好的解决方案。如何在用户按下Ok后检索新输入的文本。

EN

回答 3

Stack Overflow用户

发布于 2014-02-07 12:54:31

尝试这样做:

代码语言:javascript
复制
EditTextPreference pref_dayCount = (EditTextPreference)findPreference("pref_dayCount");
pref_dayCount.setDefaultValue(30);
pref_dayCount.setSummary(getResources().getString(R.string.pref_plan_days_number_summary)+" "+pref_dayCount.getText());
pref_dayCount.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
            preference.setSummary(getResources().getString(R.string.pref_plan_days_number_summary)+" "+newValue.toString());    
        return true;
    }
});
票数 2
EN

Stack Overflow用户

发布于 2013-06-17 08:01:20

好的,我想我知道问题是什么了,从android开发人员的参考资料中,它说这个回调是在内部状态更新之前调用的,所以我猜这就是为什么你看到旧值的原因。

你这样做很好,但我猜你需要使用newValue对象,可能是这样的:

代码语言:javascript
复制
public class MyPreferencesActivity extends PreferenceActivity {

EditTextPreference edp_password = (EditTextPreference)       findPreference("pref_key_account_password");

edp_password.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
    public boolean onPreferenceChange(Preference preference, Object newValue) {

        Log.v(TAG, "Password is: " + (EditText)newValue.getText());
        return true;
    }
});

我不确定这是否有效,我只是免费写它:P

票数 0
EN

Stack Overflow用户

发布于 2014-09-05 15:02:41

password.getText将不会获得更新值。使用:

代码语言:javascript
复制
String password = newValue.toString();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17138800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档