2011-09-10 64 views
1

我试图做到这一点按钮:安卓知道哪个按钮被按下时创建编程

编程方式创建布局上4个按钮。然后,为每个按钮创建一个onclick监听器。然后,根据哪个按钮被按下,会做一些逻辑。

我在我的XML文件中创建了一个LinearLayout,并将其命名为“布局”。

所以,我的代码去是这样的:

layout = (LinearLayout)findViewById(R.id.layout); 

    //Create the array of buttons 
    Button [] subjectButtons_BT = new Button[4]; 

    for(int i=0; i<4; i++){ 
     subjectButtons_BT[i] = new Button(this); 
     // Add the button to the layout 
     layout.addView(subjectButtons_BT[i]); 
     subjectButtons_BT[i].setOnClickListener(new Button.OnClickListener() { 
       public void onClick(View v) { 
       // if it is the first button, do LOGIC1 
       // if it is the second button, do LOGIC2 etc 
       } 
     }); 
    } 

到目前为止,我已成功地创建了4个按钮,我可以按一下按钮。 但是,我不知道如何在setOnClickListener部分的逻辑。

我想知道哪个按钮被按下。所以,我尝试使用v.getId(),但它总是返回-1。

有人可以建议,如果这是正确的路要走吗?如果是的话,如何做逻辑?

谢谢。

回答

0

您可以设置按钮的ID在创建之后它们,然后检查该ID的OnClickListener

layout = (LinearLayout)findViewById(R.id.layout); 

//Create the array of buttons 
Button [] subjectButtons_BT = new Button[4]; 

for(int i=0; i<4; i++){ 
    subjectButtons_BT[i] = new Button(this); 
    subjectButtons_BT[i].setId(i); 
    // Add the button to the layout 
    layout.addView(subjectButtons_BT[i]); 
    subjectButtons_BT[i].setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       int id = v.getId(); 
       if (id == 0) { 
       } else if (id == 1) { 
       } 
       //etc. 
      } 
    }); 
} 
+0

工作得非常好。谢谢。 – alan

2

中有两个选项用于确定哪些动态按钮被点击。

1) Set ID to the button and compare ID 
2) Set Tag to the button if you have come more information about button 
    and want to access it 

1)您可以设置ID的按钮,并在onClick()方法,你可以通过button.getId()方法得到的ID,你可以比较IDS,并根据点击执行操作。

2)如果设置了标记,那么你必须通过调用button.getTag()方法来获取标记,并通过这种方式,您可以通过对象与按钮