初始化从其他 activity 获得的 long 值
Initialize long value which was get from other activity
我从其他 activity 那里得到了一个 long 值,想将它保存在 sqlite 中。
long fk;
fk = bundle.getLong("ab"); // value ab get from other activities
k.insertStaffBenefit(name,result,fk);
StaffAPI.java
public class StaffAPI {
private SQLiteDatabase database;
private MyDatabaseHelper dbHelper;
public String[] allColumns={MyDatabaseHelper.ID3, MyDatabaseHelper.Description,MyDatabaseHelper.Amount,MyDatabaseHelper.Twd_id};
public StaffAPI(Context context)
{
dbHelper=new MyDatabaseHelper(context);
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public long insertStaffBenefit(String description,String amount,long id)
{
database=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(MyDatabaseHelper.Description,description);
values.put(MyDatabaseHelper.Amount,amount);
values.put("Twd_id",id);
database.insert(MyDatabaseHelper.TABLE_STAFF_BENEFICT,null,values);
database.close();
return 0 ;
}
}
我知道我必须初始化 a
因为它可能指向 null,但我该如何解决这个问题?
java.lang.NullPointerException: Attempt to invoke virtual method 'long
com.example.project.project.API.StaffAPI.insertStaffBenefit(java.lang.String,
java.lang.String, long)' on a null object reference
我不认为你的错误来自 NullPointerException
of long
。 long
是原始数据类型,它有默认值,您不能将 null
值分配给它,如:long a = null
。不可能。因此,我建议您在分配之前检查您的bundle.getLong("foreignKey")
:
long a;
a= bundle.getLong("foreignKey") != null? bundle.getLong("foreignKey") : 0;
k.insertToDB(a);
编辑:
在您的 logcat 中,当您尝试从 null
对象(代码中的 k)调用 insertStaffBenefit
时发生错误。试试看。
a是long,不是Long,所以它的默认值为0,不是null。然后可以看方法getLong("foreignKey"),method getLong(String key)
的源码
它的默认值为0,它的return种类是long,不是Long。
所以你不需要判断a是否为null。
错误不是 a 为空,而是调用 insertStaffBenefit。
我从其他 activity 那里得到了一个 long 值,想将它保存在 sqlite 中。
long fk;
fk = bundle.getLong("ab"); // value ab get from other activities
k.insertStaffBenefit(name,result,fk);
StaffAPI.java
public class StaffAPI {
private SQLiteDatabase database;
private MyDatabaseHelper dbHelper;
public String[] allColumns={MyDatabaseHelper.ID3, MyDatabaseHelper.Description,MyDatabaseHelper.Amount,MyDatabaseHelper.Twd_id};
public StaffAPI(Context context)
{
dbHelper=new MyDatabaseHelper(context);
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public long insertStaffBenefit(String description,String amount,long id)
{
database=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(MyDatabaseHelper.Description,description);
values.put(MyDatabaseHelper.Amount,amount);
values.put("Twd_id",id);
database.insert(MyDatabaseHelper.TABLE_STAFF_BENEFICT,null,values);
database.close();
return 0 ;
}
}
我知道我必须初始化 a
因为它可能指向 null,但我该如何解决这个问题?
java.lang.NullPointerException: Attempt to invoke virtual method 'long com.example.project.project.API.StaffAPI.insertStaffBenefit(java.lang.String, java.lang.String, long)' on a null object reference
我不认为你的错误来自 NullPointerException
of long
。 long
是原始数据类型,它有默认值,您不能将 null
值分配给它,如:long a = null
。不可能。因此,我建议您在分配之前检查您的bundle.getLong("foreignKey")
:
long a;
a= bundle.getLong("foreignKey") != null? bundle.getLong("foreignKey") : 0;
k.insertToDB(a);
编辑:
在您的 logcat 中,当您尝试从 null
对象(代码中的 k)调用 insertStaffBenefit
时发生错误。试试看。
a是long,不是Long,所以它的默认值为0,不是null。然后可以看方法getLong("foreignKey"),method getLong(String key)
的源码它的默认值为0,它的return种类是long,不是Long。 所以你不需要判断a是否为null。 错误不是 a 为空,而是调用 insertStaffBenefit。