我正在 Android 中编写一个闪存卡应用程序,我尝试通过一个复选框来添加将单词添加到评论列表的功能。当用户转到下一个单词时,我会看到复选框是否被选中。如果是,我将这个词添加到评论列表中,如果不是,我删除这个词。当我在手机和模拟器上对其进行测试时,每次在选中复选框时尝试转到下一个单词或主页时,我都会强制关闭。我不知道是什么导致了错误,因为在 LogCat 页面中,它没有显示行号或发生了什么错误。
当我不检查单词时,我可以毫无问题地翻阅它们;检查它并转到另一个词是导致问题的原因,所以我猜它与 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();
}