我编写了以下代码,但没有得到如何为所有按钮编写OnclickListner()
方法。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout layout = (LinearLayout) findViewById(R.id.ll1Relative);
for (int i = 1; i < 10; i++) {
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
Button b = new Button(this);
b.setText(""+ i);
b.setId(100+i);
b.setWidth(30);
b.setHeight(20);
layout.addView(b, p);
}
}
答案 0 :(得分:2)
您可以使用这样的匿名内部方法:
Button b = new Button(this);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
b.setText("" + i);
b.setTag("button" + i);
b.setWidth(30);
b.setHeight(20);
答案 1 :(得分:0)
如果您希望按钮执行不同的操作,可以让Activity扩展OnClickListener,在循环中设置b.setOnClickListener(this)
,并添加类似
@Override
public onClick(View v)
{
// get who called by
String sTag = (String) v.getTag();
if (sTag.equals("button1"))
{
//do some stuff
}
else if (sTag.equals("button2"))
{
//do some other stuff
}
// and so on
}
处理点击次数。
我在这里编辑这个,因为缺少换行符会使评论含糊不清:
int iBtnID = v.getId();
switch (iBtnID)
{
case 101:
// do stuff;
break;
case 102:
// do other stuff
break;
// and so on
}
答案 2 :(得分:-1)
LinearLayout lin = (LinearLayout) findViewById(R.id.linearLayout);
Button b1 = new Button(this);
b1.setText("Btn");
b1.setId(int i=2);
b1.setonClicklistenor(this);
lin .addView(b1);
和
onclick (View v){
int i=v.getId();
if (i==2){
///operation
}
}
}