本帖最后由 vviking 于 2013-08-21 14:28:52 编辑

解决方案 »

  1.   

    无法正面回答楼主的问题。说一种解决方案吧:可以搞一个boolean变量,在onResume中赋ture,在onCheckedChanged中检查,如为true则赋成false然后什么也不干返回,为false则弹dialog。
      

  2.   

    呵呵,这种方法我尝试过,但是失败的。因为,当group.check()后,系统会调用两次onCheckedChanged()方法(没研究为什么会调用两次),所以用一个外部变量时,虽然系统第一次调用onCheckedChanged()中,可以判断这个外部变量做不同操作,但由于做完操作以后需要将外部变量恢复初始值,于是系统紧接着的第二次调用onCheckedChanged()中,变量被恢复初始值了,所以还是走弹出dialog的操作。我找到另一种方法,定义checked button的状态变量mCurrentChecked,存到数据库中。onCreate()时,从数据库中读出mCurrentChecked的状态,在onResume()中,group.check(mCurrentChecked)。
    此时在onCheckedChanged()中判断,if(checkedId==mCurrentChecked){则说明是通过group.check()触发}else{用户触发-->Reset Data}。即使用户触发的radiobuttonId == mCurrendChecked也没关系,因为checkedbutton没有发生改变,data不需要reset,本就应该走前者的case。