2

私は通常、コーディングします

    Button button1 = (Button)findViewById(R.id.start1);
    button1.setOnClickListener(mStart1Listener);
    Button button2 = (Button)findViewById(R.id.start2);
    button2.setOnClickListener(mStart2Listener);

しかし、アンドロイドのサンプルでは、​​これらを ServiceStartArgumentsController.java で見つけました

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.service_start_arguments_controller);

    // Watch for button clicks.
    Button button = (Button)findViewById(R.id.start1);
    button.setOnClickListener(mStart1Listener);
    button = (Button)findViewById(R.id.start2);
    button.setOnClickListener(mStart2Listener);
    button = (Button)findViewById(R.id.start3);
    button.setOnClickListener(mStart3Listener);
    button = (Button)findViewById(R.id.startfail);
    button.setOnClickListener(mStartFailListener);
    button = (Button)findViewById(R.id.kill);
    button.setOnClickListener(mKillListener);
}

それらの違いと、1 つのボタンで複数の ClickListener を追加できる理由

4

2 に答える 2

2

それらの違いと、1 つのボタンで複数の ClickListener を追加できる理由

ビューは OnClickListener を 1 つだけ持つことができます。2 番目のアプローチは、変数を再利用するだけですbutton。3 行目に注目してください。

Button button = (Button)findViewById(R.id.start1);
button.setOnClickListener(mStart1Listener);
button = (Button)findViewById(R.id.start2); // This one

の以前の値を新しいButtonで上書きbuttonし、新しいButton には次の OnClickListener が割り当てられます。

于 2012-11-25T06:19:31.357 に答える
0

それは1つのボタンではありません。各 setOnClickListener の前に変更されます。コードは、そのアクティビティのさまざまなボタンに対して 1 つの変数を使用するだけです。

于 2012-11-25T06:21:33.823 に答える