Android CheckBox isChecked()或编辑SharedPreferences导致强制关闭

时间:2011-07-31 02:42:42

标签: android sharedpreferences ischecked

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

1 个答案:

答案 0 :(得分:0)

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