2015-11-05 22 views
-1

我從其他活動中獲得長整型值並希望將其保存在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,因爲它可能對空指指點點,但我該怎麼做才能解決這個問題?

顯示java.lang.NullPointerException:嘗試調用虛擬方法 '長 com.example.project.project.API.StaffAPI.insertStaffBenefit(java.lang.String中, java.lang.String中,長)'在空對象參考

+0

任何人都知道如何解決?您的com.example.project.project.API.StaffAPI.insertStaffBenefit發生了 – Hoo

+0

崩潰,請顯示此代碼並調用代碼。 – starkshang

+0

請顯示您的insertToDB和insertStaffBenefit方法。 – starkshang

回答

0

我不認爲你的錯誤來自NullPointerExceptionlonglong是原始數據類型,它具有默認值,您不能將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發生錯誤。嘗試檢查它。

+0

我沒有這樣的事'Toast.makeText(getActivity()getApplicationContext(),FK + 「」,Toast.LENGTH_LONG。).show();',它顯示了'fk'價值 – Hoo

+0

做初始化'k'在使用'k.insertStaffBenefit(name,result,a)之前''? logcat告訴我們你試圖從'null'對象調用'insertStaffBenefit'。這意味着你的代碼中'k是空的'。 –

+0

謝謝......我錯過了寫'k = new com.example.project.project.API.StaffAPI(getActivity());' – Hoo

1

a很長,不是Long,所以它的默認值是0,不是null。然後你就可以看到方法getLong(「外鍵」)的源代碼,它的默認值是0,它的返回類型是long,不是Long。 所以你不需要判斷a是否爲空。 錯誤不是a是null,而是調用insertStaffBenefit。

+0

注意,謝謝:) – Hoo