如何在我的SQLite登录中更正java.lang.NullPointerException?

时间:2015-04-20 00:59:40

标签: android sqlite

使用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

1 个答案:

答案 0 :(得分:0)

您正在使用Bundle对象而不首先检查无效。 这就是你的应用崩溃的原因。

尝试更改代码:

Bundle b = getIntent().getExtras();
int status = b != null ? b.getInt("status") : 1;
if(status == 1){