提问人:Hamna 提问时间:6/16/2021 更新时间:6/16/2021 访问量:92
为什么布尔值 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
问:
我有一个活动,它从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;
}
答:
0赞
Anatolii Chub
6/16/2021
#1
这意味着您的变量未初始化。在调用某些调用之前,应初始化变量:DB
DB
DB = new DbHelper(); // or something like this
Boolean update = DB.updateStudents(user, email_id, countrycode, phone, pass);
评论
0赞
Hamna
6/16/2021
它是在按钮事件侦听器之前初始化的。仍然不起作用。
评论