如何从程序添加按钮获取OnClick()?

Mok*_*pps 5 android onclick button buttonclick onclicklistener

我添加了一些带有以下行的按钮:

for (int i=0; i<XML.size(); i++) {
//add button
ToggleButton b = new ToggleButton(this); 
// Setting the parameters
lefttextv.setLayoutParams(lleft); 
b.setLayoutParams(bright);
//customize button
    b.setOnClickListener(this);
b.setId(id_button);
System.out.println(id_button);
b.setHeight(100);
b.setWidth(200);
// Adding to the RelativeLayout as a child
layouth.addView(lefttextv);
layouth.addView(b);
    id_button++;  
    }
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能获得OnClick()方法呢?我已经用这个方法实现了View.OnClickListener:

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId())
    {
    case id_button: Log.d("Button 0","Button 0 pressed);
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我如何获得Id?

Fab*_*ook 7

b是视图,如果您的onClick方法在您的主类中只是使用b.setOnClickListener(this);并让您的活动实现onClickListener并且您拥有它.或者按常规方式设置巡回听众.

id用于xml引用,创建对象并使用此id引用,在您的情况下,您创建了b具有ToggleButton的所有属性的视图.这是观点.

相反,如果v.getId()只使用if(v == b)


Mag*_*ode 6

只是使用b.setOnClickListener(this),where this指的是实现的类OnClickListener.

编辑:

您可以使用ID资源来识别按钮.有关更多信息,请参见此处 您可以将这些ID分配给编程生成的视图,并在switch/case语句中检查它们.

或者@SmartLemon说,你可以检查if (v == b),然后你不需要打扰ID.