关于RadioGroup中的radiobutton选中状态保存的问题!!

来源:互联网 发布:js 增加option 编辑:程序博客网 时间:2024/05/16 17:31

最近被RaioGroup这个控件给烦的不行,在多个activity之间跳转的时候,会失去radiobutton的选择状态,那么如何进行保存当前的选中状态呢?想到用sharedpreference来记录选中项,在oncreate()的时候;
取出状态并且setchecked(true),这不失为一种方法。

可是当我真正去操作是却还是碰到了很多问题?
首先在`new OnCheckedChangeListener() {

    @Override    public void onCheckedChanged(RadioGroup group, int checkedId) {}`

时传入了两个参数,要注意的一点是,这个checkedId并不是选中radiobutton的索引而是选中的radiobutton的ID值,这个时候,我们用shapre进行保存这个Id值,然后根据这个id值那么我们就可以找到,被选中的radiobutton了,然后radiobutton.setchecked(true),这样就可以了?
可是我碰到了第一个问题,这个id值居然是不断增长的?那么为什么呢?
后来发现在我们用程序setchecked(true)的同时,也仍然触发了checkedchangelistner()这个方法,所以当我们手动变更和程序变更时,这个方法被连续调用了两次。
所以关键的来了我们需要在XML文件中,指定几个radiobutton的id值,也就是@+id/???,并且在再java文件中radiobutton.setId();把id写死,这样就可以保证id不会变化,这样我们就可以根据所获得的的ID值来设置选中状态,这样就可以保存住状态了!

0 0
原创粉丝点击