我在使用RadioGroup的clearChecked()时遇到了问题.我正在向用户显示一个多项选择题,在用户选择答案后,我会检查答案,给他一些反馈,然后转到下一个问题.在转到下一个问题的过程中,我清楚检查RadioGroup.
任何人都可以向我解释为什么onCheckedChanged方法被调用3次?一旦实际发生了变化(用户更改),一旦我清除检查(使用-1作为选定的ID)和一次之间(用户再次更改)?
据我所知,第二次触发是由clearCheck引起的.代码如下:
private voID checkAnswer(RadioGroup group, int checkedID){ // this makes sure it doesn't blow up when the check is cleared // also we don't check the answer when there is no answer if (checkedID == -1) return; if (group.getCheckedRadiobuttonID() == -1) return; // check if correct answer if (checkedID == valIDAnswerID){ score++; this.giveFeedBack(FeedBackType.GOOD); } else { this.giveFeedBack(FeedBackType.BAD); } // allow for user to see Feedback and move to next question h.postDelayed(this, 800);}private voID changetoQuestion(int questionNumber){ if (questionNumber >= this.questionSet.size()){ // means we are past the question set // we're going to the score activity this.goToscoreActivity(); return; } //clearing the check gr.clearCheck(); // give change the Feedback back to question imgFeedback.setimageResource(R.drawable.question_mark); //OTHER CODE HERE}
并且run方法看起来像这样
public voID run() { questionNumber++; changetoQuestion(questionNumber); }
解决方法:
我发现如果一个项目被检查并且您在无线电组上调用clearCheck(),它将调用onCheckedChanged两次.第一次使用已检查项目的ID,第二次使用-1 / VIEw.NO_ID.恕我直言,这是一个错误,显然它已经存在至少1.6.请参阅此谷歌代码错误报告:http://code.google.com/p/android/issues/detail?id=4785
似乎唯一的解决方案是检查实际的Radiobutton.isChecked()并测试它是真还是假.这种方式违背了onCheckedChanged返回项目ID的目的,因为你现在必须要么保留对这些按钮的引用,要么每次都调用findVIEwByID.
我怀疑他们会解决这个问题,因为改变它可能会以意想不到的方式破坏现有代码.
总结以上是内存溢出为你收集整理的Android的ClearCheck()对RadioGroup有误吗?全部内容,希望文章能够帮你解决Android的ClearCheck()对RadioGroup有误吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)