2

我通常编码

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

但在 android 示例中,我在 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);
}

它们有什么区别,为什么一个按钮可以添加多个ClickListener

4

2 回答 2

2

它们有什么区别,为什么一个按钮可以添加多个ClickListener

一个 View 只能有一个 OnClickListener。第二种方法只是重新使用变量button,注意第三行:

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

那不是一个按钮。它在每个 setOnClickListener 之前发生变化;该代码只为该活动上的不同按钮使用一个变量。

于 2012-11-25T06:21:33.823 回答