一种情况,三种不同的方法。

一个(变量在活动顶部声明为私有):

radioGroup = (RadioGroup) findViewById(R.id.RadioGroup);

radioButton1 = (RadioButton) findViewById(R.id.RadioButton1);
radioButton2 = (RadioButton) findViewById(R.id.RadioButton2);

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        if (radioButton1.isChecked()) {
            // do something
        } else if (radioButton2.isChecked()) {
            // do something
        }
    }
});


二:

final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.RadioGroup);

final RadioButton radioButton1 = (RadioButton) findViewById(R.id.RadioButton1);
final RadioButton radioButton2 = (RadioButton) findViewById(R.id.RadioButton2);

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        if (radioButton1.isChecked()) {
            // do something
        } else if (radioButton2.isChecked()) {
            // do something
        }
    }
});


三:

((RadioGroup) findViewById(R.id.RadioGroup)).setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        if (((RadioButton) findViewById(R.id.RadioButton1)).isChecked()) {
            // do something
        } else if (((RadioButton) findViewById(R.id.RadioButton2)).isChecked()) {
            // do something
        }
    }
});


哪种方法是“最佳”方法,或者不介意?

最佳答案

我认为两者之间没有任何区别。但是,三个将遭受性能损失,因为每次触发onCheckedChanged时,每个单选按钮都必须调用findViewById。其他方法是“缓存”对RadioButton的引用。

关于java - 最佳的编码风格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13887780/

10-08 22:34
查看更多