效果图:
图1:
图2:
方法一:
public class MainActivity extends AppCompatActivity {
private RadioGroup rgSex; //单选性别组
private Button button; //获取值
private TextView tvShow; //显示
String info = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView(); // 绑定id
rgSex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.rb_man:
info = rbMan.getText().toString().trim();
break;
case R.id.rb_woman:
info = rbWoman.getText().toString().trim();
break;
}
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tvShow.setText(info);
}
});
}
private void initView() {
rgSex = findViewById(R.id.rg_sex);
button = findViewById(R.id.btn_get);
tvShow = findViewById(R.id.tv_show);
}
方法二:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private RadioButton rbMan,rbWoman; // 男,女
private Button button; //获取值
private TextView tvShow; //显示
String info = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView(); // 绑定id
rbWoman.setOnClickListener(this);
rbMan.setOnClickListener(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tvShow.setText(info);
}
});
}
private void initView() {
rbMan = findViewById(R.id.rb_man);
rbWoman = findViewById(R.id.rb_woman);
button = findViewById(R.id.btn_get);
tvShow = findViewById(R.id.tv_show);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.rb_man:
info = rbMan.getText().toString().trim();
break;
case R.id.rb_woman:
info = rbWoman.getText().toString().trim();
break;
}
}
}
总结:
1. 使用方法一,代码会比较简洁,其原理就是以一个单选按钮组为中心,再去实现对应逻辑
2. 使用方法二,代码会比较多,但逻辑和普通按钮时一样的,都是先设定监听,在去onClick
方法里判断,在做出对应逻辑,其代码有多余的冗余度。
综上所述,推荐使用方法一!