首页 > 解决方案 > java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 (java.lang.String)'

问题描述

嗨,我的代码中出现以下错误可能是我遗漏了一些东西,我有另一个具有相同类型的代码并且工作正常:

java.lang.NullPointerException: 尝试调用虚拟方法'long app.akexorcist.bluetoothspp.DatabaseHelper.insertData(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang .String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)' 在一个空对象上参考

以下是一些代码:

谢谢

public void postDataToSQLite() { SharedPreferences sharedpreferences = getSharedPreferences(LoginActivity.MyPREFERENCES, Context.MODE_PRIVATE); SharedPreferences.Editor 编辑器 = sharedpreferences.edit();

    SharedPreferences vehiclesharedpreferences = getSharedPreferences(VehicleEntryActivity.MyVehicle, Context.MODE_PRIVATE);
    SharedPreferences.Editor vehicle_editor = sharedpreferences.edit();

    String name = txtName.getText().toString();
    String surname = txtSurname.getText().toString();
    String idno = txtIDNo.getText().toString();
    String birth = txtDateBirth.getText().toString();

    String username = sharedpreferences.getString(Name, "");
    editor.apply();

    String make = vehiclesharedpreferences.getString(Make, "");
    String colour = vehiclesharedpreferences.getString(Colour, "");
    String expiry = vehiclesharedpreferences.getString(Expiry, "");
    String regno = vehiclesharedpreferences.getString(RegNo, "");
    String date = vehiclesharedpreferences.getString(DateTime, "");
    String loc = vehiclesharedpreferences.getString(GPS, "");
    vehicle_editor.apply();

    String event = "Entry";

    if(name.isEmpty() || surname.isEmpty() || idno.isEmpty() || birth.isEmpty())
    {
        Toast.makeText(this, "Please scan drivers licence", Toast.LENGTH_SHORT).show();
    }
    else
    {
        long id = helper.insertData(make,colour,expiry,regno,date,loc,name,surname,idno,birth,event,username);
        Intent intent = null;
        if(id<=0)
        {
            Message.message(getApplicationContext(),"Failed... Please Check Data");
        }
        else
        {
            Message.message(getApplicationContext(),"Insert Successful");
            intent = new Intent(getApplicationContext(), Main.class);
            startActivity(intent);

        }
    }
}

数据库助手类:

public long insertData(String make, String colour, String expiry,String regno,String date,String loc,String name,String surname,String idno,Stringbirth,String event,String username) { SQLiteDatabase dbb = myhelper.getWritableDatabase();

    ContentValues contentValues = new ContentValues();
    contentValues.put(myDbHelper.COLUMN_MAKE, make);
    contentValues.put(myDbHelper.COLUMN_COLOUR, colour);
    contentValues.put(myDbHelper.COLUMN_EXPIRY_DATE, expiry);
    contentValues.put(myDbHelper.COLUMN_REG_NO, regno);
    contentValues.put(myDbHelper.COLUMN_DATE, date);
    contentValues.put(myDbHelper.COLUMN_LOC, loc);
    contentValues.put(myDbHelper.COLUMN_DRIVER_NAME, name);
    contentValues.put(myDbHelper.COLUMN_DRIVER_SURNAME, surname);
    contentValues.put(myDbHelper.COLUMN_DRIVER_IDNO, idno);
    contentValues.put(myDbHelper.COLUMN_DRIVER_BIRTH, birth);
    contentValues.put(myDbHelper.COLUMN_EVENT, event);
    contentValues.put(myDbHelper.COLUMN_ENTRY_USERNAME, username);
    long id = dbb.insert(myDbHelper.TABLE_SCAN, null , contentValues);
    dbb.close();
    return id;
}

E / AndroidRuntime:致命异常:主进程:app.akexorcist.bluetoothspp,PID:23330 java.lang.NullPointerException:尝试调用虚拟方法'long app.akexorcist.bluetoothspp.DatabaseHelper.insertData(java.lang.String,java。 lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang。 String, java.lang.String, java.lang.String)' 在 app.akexorcist.bluetoothspp.LicenseEntryActivity.postDataToSQLite(LicenseEntryActivity.java:281) 的 null 对象引用上 app.akexorcist.bluetoothspp.LicenseEntryActivity$1.onClick(LicenseEntryActivity .java:81) 在 android.view.View.performClick(View.java:4781) 在 android.view.View$PerformClick.run(View.java:19874) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902 ) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) 运行(ZygoteInit.java:902)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) 运行(ZygoteInit.java:902)

标签: javaandroidsqlite

解决方案


您的变量“助手”似乎为空或未启用。

你怎么称呼你的助手?


推荐阅读