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 に答える