为什么一个按钮可以添加多个Click Listeners

时间:2012-11-25 06:18:14

标签: android

我通常编码

    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

2 个答案:

答案 0 :(得分:2)

  

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

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

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

它使用 new 按钮覆盖button的先前值, new 按钮将分配下一个OnClickListener。

答案 1 :(得分:0)

那不是一个按钮。它在每个setOnClickListener之前改变;代码只对该活动的不同按钮使用一个变量。