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();
}
這段代碼沒有上下文,所以很難回答。你確定logcat不顯示任何東西嗎?幫助調試的一件事就是在代碼的各個部分添加自己的日誌條目。例如,在updateReviewCards中,可以添加'Log.i(「update」,「update completed」)行;' – Phil
我想我發現了這個問題。當我將鼠標懸停在keySet()上時,它說該集合不支持添加。對不起,代碼和/或我的問題很難理解。我不想包含與問題無關的部分。 –