我使用RadioGroup.check()方法來初始化radioGroup,然后我在onCheckedChanged()里去根據選擇的radioButton來發(fā)送網絡請求器贩,并且新建fragment颅夺。這時候我發(fā)現一個問題:這個radiobutton下的網絡請求會發(fā)送兩次,而且fragment也會創(chuàng)建兩次蛹稍,而且那個新建的fragment里還有很多的初始化過程和網絡請求吧黄,所以會讓用戶一直處在等待的狀態(tài)。
開始時候各種找原因唆姐,以為是我在哪里調用了太多次拗慨,還是共用layout文件有相同的id所以被別的地方的調用影響了?都不是奉芦,最后在stackoverflow上找到了答案:使用RadioGroup.check()會調用onCheckedChanged()方法三次赵抢,而我在onCheckedChanged()方法里判斷了調用的是哪個id,然后發(fā)送請求創(chuàng)建fragmeng声功,所以只調用了兩次烦却。
http://stackoverflow.com/questions/10263778/radiogroup-calls-oncheckchanged-three-times
RadioGroup.check()源碼如下:
http://www.grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/widget/RadioGroup.java#RadioGroup.check%28int%29
解決方法 :使用radioBotton.setChecked()方法來解決