我知道有很多问题与此非常相似,但其中没有一个似乎对我有用。 当我选中此框时,我希望密码可见。当我取消选中它时,我想要点而不是实际字符。 截至目前,我只有点。
我收到以下nullpointerexception。
07-08 15:08:50.441: E/AndroidRuntime(4518): FATAL EXCEPTION: main
07-08 15:08:50.441: E/AndroidRuntime(4518): java.lang.NullPointerException
07-08 15:08:50.441: E/AndroidRuntime(4518): at com.passwordkeeper.ui.ActivityPreferenceScreen$1.onPreferenceClick(ActivityPreferenceScreen.java:65)
07-08 15:08:50.441: E/AndroidRuntime(4518): at android.preference.Preference.performClick(Preference.java:951)
07-08 15:08:50.441: E/AndroidRuntime(4518): at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:215)
这是我的代码:
@SuppressWarnings("deprecation")
public void setFields(){
mPasswordField = (EditText) findViewById (R.id.loginPwdEditText);
showPwd = (CheckBoxPreference) findPreference("checkBox");
showPwd.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
if(showPwd.isChecked()){
Log.v("showpwd", "apparently its checked");
mPasswordField.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
else{
Log.v("showpwd", "apparently its not checked now");
mPasswordField.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
}
return true;
}
});
日志正常运行。因此,当我选中此框时,它实际上正在打印“显然已经过检查”。但是,它会被卡住并且空指针异常会关闭应用程序。
任何帮助都会有用!
答案 0 :(得分:0)
此代码错误:
mPasswordField.setInputType(129);
mPasswordField.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);
第二组覆盖第一组。标志必须是OR'ed:
mPasswordField.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
至于NPE,你最有可能以
结束mPasswordField
是null
,因此是例外。
答案 1 :(得分:0)
显示密码:
if(showPwd.isChecked()){
if(mPasswordField!=null)
pass.setInputType(InputType.TYPE_CLASS_TEXT);
}
else
pass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
答案 2 :(得分:0)
尝试移动
mPasswordField = (EditText) findViewById (R.id.loginPwdEditText);
在onPreferenceClick(Preference preference)
方法
答案 3 :(得分:0)
您好,只需将此1行代码放在您的检查条件下即可 -
btnCheckBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
editPsw.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}
});
答案 4 :(得分:0)
您可以尝试使用此代码。它完美地工作
cb_Visible_password
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
et_confirmpassword.setTransformationMethod(null);
} else {
et_confirmpassword
.setTransformationMethod(PasswordTransformationMethod
.getInstance());
}
}
});