0

我正在为多个按钮分配一个按钮侦听器,如下所示:

    for(Button b : buttons)
    {
        b.setOnClickListener(clicklisten);
    }

按钮监听器定义如下:

private OnClickListener clicklisten = new OnClickListener()
{
    public void onClick(View v)
    {
        Context context = getApplicationContext();
        text = Toast.makeText(context, " Button Clicked", Toast.LENGTH_SHORT);
        text.show();
    }
};

事实上,它只显示一个带有“Button Clicked”的 Toast。我希望它检测单击了哪个按钮,可能是通过该按钮的名称或 ID(如 XML 中定义的那样),并根据该按钮显示某些内容。是否可以通过这种方式通过代码检索该信息?

4

2 回答 2

0

通过View#getId()获取资源 id 。

View.OnClickListener myOnlyhandler = new View.OnClickListener() {
  public void onClick(View v) {
      if( button1.getId() == ((Button)v).getId() ){
          // it was the button1
      }
      else if( button2.getId() == ((Button)v).getId() ){
          // it was the button2
      }
  }
}
于 2013-02-13T03:03:26.933 回答
0

或者你可以这样写......在onClick方法中传递的视图v是......被点击的按钮......所以你可以检查那个视图是否等于你的任何按钮......

View.OnClickListener myOnlyhandler = new View.OnClickListener() {
  public void onClick(View v) {
      if( button1.equals(v)){
          // it was the button1
      }
      else if( button2.equals(v)){
          // it was the button2
      }
  }
}
于 2013-02-13T03:39:38.643 回答