2011-07-31 69 views
0

我正在Android中編寫一個Flash卡應用程序,並且我試圖通過添加一個複選框來添加一個單詞到評論列表的功能。當用戶轉到下一個單詞時,我看到複選框是否被選中。如果是這樣,我將該詞添加到評論列表中,如果不是,則刪除該詞。當我在手機和模擬器上測試它時,每當我嘗試轉到下一個單詞或複選框被選中時,我都會強行關閉。我不知道是什麼導致了錯誤,因爲在LogCat頁面中,它不顯示行號或發生了什麼錯誤。Android CheckBox isChecked()或編輯SharedPreferences導致強制關閉

當我沒有檢查它們時,我可以翻閱單詞而沒有問題;檢查它並轉到另一個詞是導致問題的原因,所以我猜測它與SharedPreferences有關。

這裏有我有重要的方法:

public void onCreate(Bundle savedInstanceState) 
{ 
      //other code 
    reviewCheckBox = (CheckBox) findViewById(R.id.reviewCheckBox); 
    prefs = getPreferences(MODE_PRIVATE); 
    editor = prefs.edit(); 
    reviewCards = prefs.getAll().keySet(); 
} 
public void home(View v) 
{ 
    if (flashCardPage.getVisibility() == View.VISIBLE) 
    { 
     if (reviewCheckBox.isChecked()) 
      reviewCards.add(currentCard.getTerm()); 
     else 
      reviewCards.remove(currentCard.getTerm()); 

     updateReviewCards(); 
    } 
    //other code 
} 
public void nextWord(View v) 
{ 
    currentPosition++; 

    if (currentPosition == flashCards.size()) 
    { 
     home(wordTV); 
    } 
    else 
    { 
     if (reviewCheckBox.isChecked()) 
      reviewCards.add(currentCard.getTerm()); 
     else 
      reviewCards.remove(currentCard.getTerm()); 

     //other code 

     if (reviewCards.contains(currentCard.getTerm())) 
      reviewCheckBox.setChecked(true); 
     else 
      reviewCheckBox.setChecked(false); 
    } 
} 

public void previousWord(View v) 
{ 
    if (currentPosition > 0) 
    { 
     if (reviewCheckBox.isChecked()) 
      reviewCards.add(currentCard.getTerm()); 
     else 
      reviewCards.remove(currentCard.getTerm()); 

     //other code 

     if (reviewCards.contains(currentCard.getTerm())) 
      reviewCheckBox.setChecked(true); 
     else 
      reviewCheckBox.setChecked(false); 
    } 
} 
public void updateReviewCards() 
{ 
    editor.clear(); 

    for (String card : reviewCards) 
     editor.putString(card, card); 

    editor.commit(); 
} 
+0

這段代碼沒有上下文,所以很難回答。你確定logcat不顯示任何東西嗎?幫助調試的一件事就是在代碼的各個部分添加自己的日誌條目。例如,在updateReviewCards中,可以添加'Log.i(「update」,「update completed」)行;' – Phil

+0

我想我發現了這個問題。當我將鼠標懸停在keySet()上時,它說該集合不支持添加。對不起,代碼和/或我的問題很難理解。我不想包含與問題無關的部分。 –

回答

0

通過getPreferences().getAll().keySet()返回不支持將設定的。

相關問題