.setOnClickListener报错NullPointerException

来源:互联网 发布:谭浩强的c语言入门pdf 编辑:程序博客网 时间:2024/05/16 01:30
AlertDialog.Builder ad=new AlertDialog.Builder(this);ad.setTitle("请登录");View ldView=LayoutInflater.from(MainActivity.this).inflate(R.layout.login_dialog,null, false);ad.setView(ldView);//通过sp对象在/data/data/SharedPreferences/目录下的创建或打开user.xml,指定只能被本应用程序读写sp=this.getSharedPreferences("user", Context.MODE_PRIVATE);//初始化登录框数据if(sp.getBoolean("isRemenber", false)){etUserName.setText(sp.getString("userName",""));            etPassword.setText(sp.getString("password",""));            cbShowPw.setChecked(sp.getBoolean("isShowPw",false));cbRemenber.setChecked(sp.getBoolean("isRemenber", false));}cbRemenber.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditor edit=sp.edit();String name=etUserName.getText().toString().trim();String password=etPassword.getText().toString().trim();if(cbRemenber.isChecked()){edit.putString("userName", name);edit.putString("password", password);edit.putBoolean("isRember", true);edit.putBoolean("isShowPw", cbShowPw.isChecked());edit.commit();}else{edit.putString("userName","");edit.putString("password","");edit.putBoolean("isRember", false);edit.putBoolean("isShowPw", cbShowPw.isChecked());edit.commit();}}});cbShowPw.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditor edit=sp.edit();if(cbShowPw.isChecked()){edit.putBoolean("isShowPw", true);edit.commit();//密码由密文变为明文etPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());}else{//密码由明文变为密文etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());}}});


我在这个对话框里插入一个布局文件,变量的实例化直接写成 下面这样

etUserName=(EditText)this.findViewById(R.id.et_userName);etPassword=(EditText)this.findViewById(R.id.et_passWord);btLogin=(Button)this.findViewById(R.id.bt_login);btCancel=(Button)this.findViewById(R.id.bt_cancel);cbShowPw=(CheckBox)this.findViewById(R.id.cb_showPw);cbRemenber=(CheckBox)this.findViewById(R.id.cb_rember);

结果是运行的时候报错

两个checkbox的.setOnClickListener都是NullPointerException


后来想到,这是在main.xml中寻找id,但我需要的是login_dialog.xml中的id

故改成下面这样

AlertDialog.Builder ad=new AlertDialog.Builder(this);ad.setTitle("请登录");View ldView=LayoutInflater.from(MainActivity.this).inflate(R.layout.login_dialog,null, false);etUserName=(EditText)ldView.findViewById(R.id.et_userName);etPassword=(EditText)ldView.findViewById(R.id.et_passWord);btLogin=(Button)ldView.findViewById(R.id.bt_login);btCancel=(Button)ldView.findViewById(R.id.bt_cancel);cbShowPw=(CheckBox)ldView.findViewById(R.id.cb_showPw);cbRemenber=(CheckBox)ldView.findViewById(R.id.cb_rember);ad.setView(ldView);//通过sp对象在/data/data/SharedPreferences/目录下的创建或打开user.xml,指定只能被本应用程序读写sp=this.getSharedPreferences("user", Context.MODE_PRIVATE);//初始化登录框数据if(sp.getBoolean("isRemenber", false)){etUserName.setText(sp.getString("userName",""));            etPassword.setText(sp.getString("password",""));            cbShowPw.setChecked(sp.getBoolean("isShowPw",false));cbRemenber.setChecked(sp.getBoolean("isRemenber", false));}cbRemenber.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditor edit=sp.edit();String name=etUserName.getText().toString().trim();String password=etPassword.getText().toString().trim();if(cbRemenber.isChecked()){edit.putString("userName", name);edit.putString("password", password);edit.putBoolean("isRember", true);edit.putBoolean("isShowPw", cbShowPw.isChecked());edit.commit();}else{edit.putString("userName","");edit.putString("password","");edit.putBoolean("isRember", false);edit.putBoolean("isShowPw", cbShowPw.isChecked());edit.commit();}}});cbShowPw.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditor edit=sp.edit();if(cbShowPw.isChecked()){edit.putBoolean("isShowPw", true);edit.commit();//密码由密文变为明文etPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());}else{//密码由明文变为密文etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());}}});

运行正常


0 0
原创粉丝点击