2011-07-31 46 views
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(); 
} 
+0

这段代码没有上下文,所以很难回答。你确定logcat不显示任何东西吗?帮助调试的一件事就是在代码的各个部分添加自己的日志条目。例如,在updateReviewCards中,可以添加'Log.i(“update”,“update completed”)行;' – Phil

+0

我想我发现了这个问题。当我将鼠标悬停在keySet()上时,它说该集合不支持添加。对不起,代码和/或我的问题很难理解。我不想包含与问题无关的部分。 –

回答

0

通过getPreferences().getAll().keySet()返回不支持将设定的。

相关问题