private void login() {
LayoutInflater factory=LayoutInflater.from(MainActivity.this);
View myView=factory.inflate(R.layout.login, null);
final EditText pass=(EditText)findViewById(R.id.pasEt);
new AlertDialog.Builder(MainActivity.this)
.setIcon(R.drawable.ic_launcher)
.setTitle("用户登录")
.setView(myView)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
cursor=helper.getReadableDatabase()
.rawQuery("select password from password", null);
String str=pass.getText().toString();
cursor.moveToFirst();
String psw=String.valueOf(cursor.getString(0))
if(psw.equals(str)){
login.setEnabled(false);
Toast.makeText(MainActivity.this, "登陆成功!", Toast.LENGTH_LONG).show();
}
//
login.setEnabled(false);
//
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "登陆失败!", Toast.LENGTH_LONG).show();
}
}).create().show();
}
红色字体为空指针位置
大神们帮忙看看吧,万分感谢!!!
6 个解决方案
#1
是不是因为你的EditText中并未赋值呢,试试在xml中给EditText上写点什么,看看还会空指针么
#2
final EditText pass=(EditText)findViewById(R.id.pasEt);
改成
final EditText pass=(EditText)myView.findViewById(R.id.pasEt);
#3
打印Log 看看pass.getText()是这个为空 还是pass为空
#4
#5
tantahe 是对的
#6
final EditText pass=(EditText)findViewById(R.id.pasEt);
通过findViewById 来获取控件,如果不指定父View,则默认是你这个activity的 layout,而如果你的layout中并没有这个ID,那么获取到的 pass 就是null。
你这里的 EditText 是属于你的弹出对话框中的控件,所以需要指定父View为你的对话框的layout,也就是
View myView=factory.inflate(R.layout.login, null);// 这个 myView 才是你的EditText控件的父View
#1
是不是因为你的EditText中并未赋值呢,试试在xml中给EditText上写点什么,看看还会空指针么
#2
final EditText pass=(EditText)findViewById(R.id.pasEt);
改成
final EditText pass=(EditText)myView.findViewById(R.id.pasEt);
#3
打印Log 看看pass.getText()是这个为空 还是pass为空
#4
#5
tantahe 是对的
#6
final EditText pass=(EditText)findViewById(R.id.pasEt);
通过findViewById 来获取控件,如果不指定父View,则默认是你这个activity的 layout,而如果你的layout中并没有这个ID,那么获取到的 pass 就是null。
你这里的 EditText 是属于你的弹出对话框中的控件,所以需要指定父View为你的对话框的layout,也就是
View myView=factory.inflate(R.layout.login, null);// 这个 myView 才是你的EditText控件的父View