修復:更改爲.equals而不是使用==。然後我將其更改爲subjects.isEmpty(),它也起作用。爲了記錄我的問題不是如何比較字符串。這恰好是我用我的代碼所遇到的問題。感謝大家的回覆!Arraylist嘗試添加項目後返回null
我有一個ArrayList,我從sharedprefs作爲字符串加載並將其轉換回ArrayList。當我加載它時,我檢查它是否爲空。如果它是空的,我用34個對象填充它。然後我嘗試使用ArrayList,但我得到一個空對象引用。
我宣佈的onCreate
private ArrayList<Integer> subjects = new ArrayList<>();
之外我的變量當我運行這段代碼,我得到
private void setupSubjects(){
SharedPreferences sharedPrefs = this.getActivity().getSharedPreferences(viewPressed, Context.MODE_PRIVATE);
Gson gson = new Gson();
String jsonString = new String();
jsonString = sharedPrefs.getString("Subjects", jsonString);
Type type = new TypeToken<ArrayList<Integer>>() {}.getType();
subjects = gson.fromJson(jsonString, type);
if(jsonString == ""){
for(int i = 0; 33 < i; i++){
subjects.add(0);
}
}
if(subjects.get(0) == 1){
questionsString = getResources().getStringArray(R.array.question);
answersString = getResources().getStringArray(R.array.answer);
questionsLoaded = new ArrayList<>(Arrays.asList(questionsString));
answersLoaded = new ArrayList<>(Arrays.asList(answersString));
randomizeSubjects();
}
}
我得到一個顯示java.lang.NullPointerException錯誤:試圖調用虛擬方法java.lang.Object java.util.ArrayList.get(int)'在該行的空對象引用上
if(subjects.get(0) == 1){
您需要先學習一些java的基礎知識...... Fx如何比較字符串 – Selvin
@Selvin我不確定這是一個好的目標。 OP顯然有一個null變量,但我們沒有[mcve] –
主題爲null,因爲它從未初始化,因爲缺少java的基礎知識(字符串比較) – Selvin