Androidでフラッシュカードアプリを作成していますが、チェックボックスを使用してレビューリストに単語を追加する機能を追加しようとしました。ユーザーが次の単語に移動すると、チェックボックスがオンになっているかどうかがわかります。そうであれば、その単語をレビューリストに追加し、そうでない場合はその単語を削除します。電話機とエミュレータでテストしたところ、チェックボックスをオンにすると、次の単語またはホームページに移動するたびに強制終了されました。 LogCatページで行番号が表示されないか、エラーが発生したため、エラーの原因はわかりません。Android CheckBox isChecked()または強制的に閉じるSharedPreferencesを編集する
私はそれらをチェックしていないときに問題なく単語をめくることができます。それをチェックして別の言葉に行くのは問題を引き起こすものなので、私はそれがSharedPreferencesと関係していると推測しています。 getPreferences().getAll().keySet()
によって返されたセットが追加サポートされていない
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();
}
このコードは文脈から離れているため、本当に答えが難しいです。 logcatに何も表示されないのですか?デバッグを支援するためにできることの1つは、コードのさまざまな部分に独自のログエントリを追加することです。たとえば、updateReviewCardsを実行すると、 'Log.i(" update "、" update completed ");' – Phil
という行を追加することができます。 keySet()の上にカーソルを置くと、セットが追加をサポートしていないと表示されます。申し訳ありませんが、コードおよび/または私の質問は理解しにくいです。私は問題に無関係な部分を含めたくなかった。 –