使用SQLite为我的应用程序创建登录/注册活动时遇到了第二个问题。我正在关注一个在线教程,我想我完全理解了这一切,并且我完全遵循了他所做的,它对他有用,但我的应用程序崩溃了。 这是我的数据库中的函数:
public Cursor getInformation(DatabaseOperations dop){
SQLiteDatabase SQ = dop.getReadableDatabase();
String[] columns = {TableData.TableInfo.USER_NAME, TableData.TableInfo.USER_PASS, TableData.TableInfo.USER_EMAIL};
Cursor CR = SQ.query(TableData.TableInfo.TABLE_NAME, columns, null, null, null, null, null);
return CR;
}
一旦点击登录,就会出现问题:按钮代码:
public void SignInOnClick(View view){
Bundle b = getIntent().getExtras();
int status = b.getInt("status");
if(status == 1){
Toast.makeText(getBaseContext(),"Please wait...",Toast.LENGTH_LONG).show();
email = Email.getText().toString();
password = Password.getText().toString();
DatabaseOperations DOP = new DatabaseOperations(CTX);
Cursor CR = DOP.getInformation(DOP);
CR.moveToFirst();
boolean loginstatus = false;
String NAME = "";
do
{
if(email.equals(CR.getString(2)) && (password.equals(CR.getString(1))))
{
loginstatus = true;
NAME = CR.getString(0);
}
}while(CR.moveToNext());
if(loginstatus)
{
Toast.makeText(getBaseContext(),"Login Successful \n Welcome"+NAME, Toast.LENGTH_LONG).show();
finish();
}
else
{
Toast.makeText(getBaseContext(), "Login Failed", Toast.LENGTH_LONG).show();
finish();
}
}
}
根据logcat错误读取如下:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.Bundle.getInt(java.lang.String)' on a null object reference
答案 0 :(得分:0)
您正在使用Bundle对象而不首先检查无效。 这就是你的应用崩溃的原因。
尝试更改代码:
Bundle b = getIntent().getExtras();
int status = b != null ? b.getInt("status") : 1;
if(status == 1){