0

我正在 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();
}
4

1 回答 1

0

返回的集合getPreferences().getAll().keySet()不支持加法。

于 2011-07-31T16:46:37.110 回答