我正在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();
}
答案 0 :(得分:0)
getPreferences().getAll().keySet()
返回的集不支持添加。