Android日常踩坑

1、RadioGroup设置默认选择,出现选中两个的问题
场景:RadioButton无id情况下,设置RadioGroup其中一个RadioButton默认选中,即android:checked=“true”,切换选项的时候默认选中项一直处于选中状态,出现两个子项同时被选中的情况
解决办法1:给RadioGroup 设置选中的RadioButton,例:

selectRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                selectRadioGroup.check(checkedId);//改变选中子项时切换状态
            }
        });

解决办法2:给默认选中的RadioButton增加一个id也能解决该问题。

另外,
多次进入页面checkedId会按RadioGroup的RadioButton数量增长,设置默认选中,默认选中的RadioButton的id会变为一个很大的值。可通过RadioButton的文字或id比较判断当前被选中的RadioButton:

		// 实例化控件
		sex = (RadioGroup) findViewById(R.id.sex);
 
		// 方法一,通过比较文字获取选中状态的RadioButton控件
		sex.setOnCheckedChangeListener(new OnCheckedChangeListener() {
 
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				// 获取选中的RadioButton的id
				int id = group.getCheckedRadioButtonId();
				// 通过id实例化选中的这个RadioButton
				RadioButton choise = (RadioButton) findViewById(id);
				// 获取这个RadioButton的text内容
				String output = choise.getText().toString();
				Toast.makeText(MainActivity.this, "你的性别为:" + output, Toast.LENGTH_SHORT).show();
			}
		});
		// 方法二,通过比较checkedId与实例化的xml中的RadioButton的ID进行判断,找出选中状态的RadioButton控件
		hobby.setOnCheckedChangeListener(new OnCheckedChangeListener() {
 
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
 
				if (baskeball.getId() == checkedId) {
					shuchu = baskeball.getText().toString();
				}
				if (table_tennis.getId() == checkedId) {
					shuchu = table_tennis.getText().toString();
				}
				if (badminton.getId() == checkedId) {
					shuchu = badminton.getText().toString();
				}
				Toast.makeText(MainActivity.this, "你喜欢的体育运动为:" + shuchu, Toast.LENGTH_SHORT).show();
 
			}
		});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值