0
我正在Android中编写一个Flash卡应用程序,并且我试图通过添加一个复选框来添加一个单词到评论列表的功能。当用户转到下一个单词时,我看到复选框是否被选中。如果是这样,我将该词添加到评论列表中,如果不是,则删除该词。当我在手机和模拟器上测试它时,每当我尝试转到下一个单词或复选框被选中时,我都会强行关闭。我不知道是什么导致了错误,因为在LogCat页面中,它不显示行号或发生了什么错误。Android CheckBox isChecked()或编辑SharedPreferences导致强制关闭
当我没有检查它们时,我可以翻阅单词而没有问题;检查它并转到另一个词是导致问题的原因,所以我猜测它与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();
}
这段代码没有上下文,所以很难回答。你确定logcat不显示任何东西吗?帮助调试的一件事就是在代码的各个部分添加自己的日志条目。例如,在updateReviewCards中,可以添加'Log.i(“update”,“update completed”)行;' – Phil
我想我发现了这个问题。当我将鼠标悬停在keySet()上时,它说该集合不支持添加。对不起,代码和/或我的问题很难理解。我不想包含与问题无关的部分。 –