2017-04-24 57 views
-2

我有一個用戶對象,其中一個成員是arraylist,我創建了一個實例pf此用戶,並試圖設置新的數組列表時,它一直在壓碎「嘗試調用虛擬方法類。 User.setUser_stocks_array(java.util.ArrayList中)」上的空對象引用」nullPointerExcepction同時訪問setter(Android)

活動1:

private User localUser; 
localUser = new User("", email); 

String jsonString = new Gson().toJson(localUser); 
Intent loginUserIntent = new Intent(getBaseContext(), StockListActivity.class); 
            loginUserIntent.putExtra("EXTRA_USER_FROM_LOGIN", jsonString); 
startActivity(loginUserIntent); 

活動2:

public User gsonReturnUser(String jsonInString){ 
     Gson gson = new Gson(); 
     User tmpUser = gson.fromJson(jsonInString, User.class); 

     Stock s1 = new Stock("hsdsf", "aa", 15, 20, "yes 4"); 
     Stock s2 = new Stock("cvcx", "aa", 25, 50, "yes fgfd"); 
     Stock s3 = new Stock("asd", "aa", 45, 54, "yes fdg"); 
     Stock s4 = new Stock("uiudf", "aa", 75, 98, "yes cv"); 

     ArrayList<Stock> tmpList = new ArrayList<Stock>(); 
     tmpList.add(0, s1); 
     tmpList.add(1, s2); 
     tmpList.add(2, s3); 
     tmpList.add(3, s4); 

     tmpUser.setUser_stocks_array(tmpList); 

     return tmpUser; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_stock_list); 
     String userFromLogin = getIntent().getStringExtra("EXTRA_USER_FROM_LOGIN"); 
     localUser = gsonReturnUser(userFromLogin); 
     stockList = localUser.getUser_stocks_array(); 
} 

我的設定器:

public void setUser_stocks_array(ArrayList<Stock> user_stocks_array) { 
    this.user_stocks_array = user_stocks_array; 
} 

爲什麼會出現這種情況? 謝謝!

更新: 我的第一項活動是不正確的推出是對NullPointerException異常的原因。

+1

'fromJson'可以返回'null',你不處理。 – Michael

+1

在調試器中運行並查看變量的值。一個好的候選人會是'jsonInString'不是你認爲的那樣。一個典型的原因可能是常數名稱中的拼寫錯誤。 – njzk2

回答

1

您的tmpUser對象可能從gson.fromJson()方法獲得null響應。

+0

你是對的,它是空的,可能是它爲空的原因是什麼? – Coder123

+0

因爲我不知道,因爲我從來沒有使用過這個Gson庫。我更喜歡使用Android的本機類來解析JSON對象。 –

0

下一次,我建議使用parcelable而不是json字符串來發送一個對象