如何在android中的按钮中附加两个Click Listener?

时间:2015-03-11 07:44:25

标签: java android

我想在一个按钮中附加两个单击侦听器,并且两个onclicklistener应该是不同的。有没有办法做到这一点。无法使用功能从第一个到第二个进行呼叫。当我使用它时,我只从第二个输出。我想要两个输出。

我正在进行一些筛选任务,所以无论何时使用单击按钮,它都会告诉我用户在Logcat中单击此按钮并按钮执行正常任务。

首先是:

Button btn = (Button) findViewById(R.id.button1);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         Log.i("First Click" , "Clicked on button 1");
       }
 });

第二是:

btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v2) {
        if (v2 instanceof Button) {
            Log.i("User Clicked a checkbox with value ", " : " + ((Button) v2).getText().toString());
        }
    }
});

4 个答案:

答案 0 :(得分:0)

你做不到。设置第二个OnClickListener将删除第一个。

这就是为什么函数被称为setOnClickListener()而不是addOnClickListener()

正如您所说,您可以从onClick()

调用两个函数

编辑:

在您的编辑中,您说要在单击按钮时显示消息。

您可以在对事件执行任何其他操作之前添加所需的记录功能,只需执行

即可
@Override
public void onClick(View v) {
    // Log something

    // Your functionality
}

或者您可以创建一个实现View.OnClickListener

的类
public class MyOnClickListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        // Log something
    }
}

然后,在您的活动上:

btn.setOnClickListener(new MyOnClickListener() {
    @Override
    public void onClick(View v) {
        super.onClick(v);

        // Your functionality
    }
});

答案 1 :(得分:0)

您可以在OnClickListener中使用函数like-

       btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       run1();
       run2();
      }
    });


private void run1(){
//Your first functionality
}


private void run2(){
//Your second functionality
}

答案 2 :(得分:0)

如果我理解正确,你可以这样做:

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    dothings(); //what you are trying to achieve with this button click
    showViewInLogCat(v); //to show you the view in the logcat
    }
}

其中showViewInLogCat()是一个函数,用于显示在logcat中单击了哪个视图:

public void showViewInLogCat(View view) {

   if (view instanceof Button) {
      Log.i("User Clicked a checkbox with value ", " : " + ((Button) view).getText().toString());
   }
   //and add the other if
}

您可以在其他观看的每个OnClick事件中调用此函数

答案 3 :(得分:0)

可能你想做这样的事情......!

btn.setOnClickListener(new View.OnClickListener() 
{
    @Override
    public void onClick(View v) {
        Log.i("First Click" , "Clicked on button 1");
        // add a boolean here to check if you want to do the task or not.
        doTask = true;
        doGeneralTask(doTask); //to show you the view in the logcat
    }
}

并在doGeneralTask(doTask)做类似的事情。

public void doGeneralTask(boolean doTask) {

    if (doTask) {
      // do whatever generalized tasks you need.
    }

}