我正在尝试使用EditTextPreference设置新密码。在这个Android4.0.3中,点击EditTextPreference会打开一个对话框窗口,用户可以在其中输入文本。但是,在按ok时,它仍然显示旧的文本值,而不是新输入的值。
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后检索新输入的文本。
发布于 2014-02-07 12:54:31
尝试这样做:
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;
}
});发布于 2013-06-17 08:01:20
好的,我想我知道问题是什么了,从android开发人员的参考资料中,它说这个回调是在内部状态更新之前调用的,所以我猜这就是为什么你看到旧值的原因。
你这样做很好,但我猜你需要使用newValue对象,可能是这样的:
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
发布于 2014-09-05 15:02:41
password.getText将不会获得更新值。使用:
String password = newValue.toString();https://stackoverflow.com/questions/17138800
复制相似问题