0

1つの状況、3つの異なるアプローチ。

1つ(変数はアクティビティの上部でプライベートとして宣言されます):

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
        }
    }
});

どちらが「最良の」アプローチですか、それとも気にしませんか?

4

2 に答える 2

4

1と2の間に違いはないと思います。ただし、3つは、起動されるたびに各ラジオボタンonCheckedChangedを呼び出す必要があるため、パフォーマンスが低下します。findViewById他の方法は、への参照を「キャッシュ」することRadioButtonです。

于 2012-12-14T23:42:08.963 に答える
1

プライベートは通常、コンパイル時にfinalのように扱われるため、「one」を使用するのが最善の方法だと思います。次に、finalとprivateのアクセス設定は同じです。

于 2012-12-14T23:48:17.897 に答える