为什么布尔值 DBHelper.updateStudents(java.lang.String,java.lang.String,java.lang.String,java.lang.String, java.lang.String)on nullobjectreference

Why is boolean DBHelper.updateStudents(java.lang.String,java.lang.String,java.lang.String,java.lang.String, java.lang.String)on nullobjectreference

提问人:Hamna 提问时间:6/16/2021 更新时间:6/16/2021 访问量:92

问:

我有一个活动,它从SQLite数据库中获取用户的数据,并显示在编辑文本中,允许用户更改他的信息。生成 chnges 时,将调用 Db.update 函数。我收到此错误。

btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String user = fullname.getEditText().getText().toString();
                String email_id = email.getEditText().getText().toString();
                String phone = number.getEditText().getText().toString();
                String countrycode = ccp.getSelectedCountryCode();
                String pass = password.getEditText().getText().toString();
                String ve_pass = verifypassword.getEditText().getText().toString();
                Toast.makeText(user_info.this, user+email_id+phone, Toast.LENGTH_SHORT).show();

                if (user.equals("") || pass.equals("") || ve_pass.equals("") || email_id.equals("") || (phone.equals("")))
                    Toast.makeText(user_info.this, "Please enter all the fields", Toast.LENGTH_SHORT).show();
                else {
                    if (pass.equals(ve_pass)) {

                        Boolean update = DB.updateStudents(user, email_id, countrycode, phone, pass);
                        if ( update== true)
                        {
                            Toast.makeText(user_info.this, "updated successfully", Toast.LENGTH_SHORT).show();
                            Intent intent = new Intent(getApplicationContext(), add_device.class);
                            startActivity(intent);
                        }

这是 logcat

2021-06-16 14:55:46.380 18829-18829/nanodevlab.screens E/AndroidRuntime: FATAL EXCEPTION: main
    Process: nanodevlab.screens, PID: 18829
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean nanodevlab.screens.DBHelper.updateStudents(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)' on a null object reference
        at nanodevlab.screens.user_info$1.onClick(user_info.java:81)
        at android.view.View.performClick(View.java:6256)
        at android.view.View$PerformClick.run(View.java:24701)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

字符串中的值不为空,我已经单独检查了它们。

这是我在 DBHELPER 类中的更新函数

public boolean updateStudents(String username, String email, String countrycode, String number, String password){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues= new ContentValues();
        contentValues.put("username", username);
        contentValues.put("email", email);
        contentValues.put("countrycode", countrycode);
        contentValues.put("number", number);
        contentValues.put("password", password);

        db.update(TABLE_USER, contentValues, email + " = ? " ,
                new String[]{String.valueOf(email)});

        return true;
    }
Android 数据库 字符串 SQLite NullReferenceException

评论


答:

0赞 Anatolii Chub 6/16/2021 #1

这意味着您的变量未初始化。在调用某些调用之前,应初始化变量:DBDB

DB = new DbHelper(); // or something like this
Boolean update = DB.updateStudents(user, email_id, countrycode, phone, pass);

评论

0赞 Hamna 6/16/2021
它是在按钮事件侦听器之前初始化的。仍然不起作用。