2 hxn 217 hxn_217 于 2012.10.29 15:28 提问

以程序的方式从添加的按钮中获得OnClick()事件

我用以下代码添加了一些按钮:

for (int i=0; i<XML.size(); i++) {
//添加按钮
ToggleButton b = new ToggleButton(this); 
// 参数设置
lefttextv.setLayoutParams(lleft); 
b.setLayoutParams(bright);
//自定义按钮
    b.setOnClickListener(this);
b.setId(id_button);
System.out.println(id_button);
b.setHeight(100);
b.setWidth(200);
// 作为子类添加到RelativeLayout布局
layouth.addView(lefttextv);
layouth.addView(b);
id_button++;  
}

但是如何获得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;
    }
}

但是运行不了,如何获得id?

3个回答

LiDaming_and
LiDaming_and   2012.10.30 10:14
已采纳

b是视图,如果你的onClick方法在主类中,使用b.setOnClickListener(this);
并且让activity实现onClickListener方法或者按常规方法设置接听事件。

id是用于xml引用,对象创建后要使用这个id引用,在你的例子中,你常见的视图b包含了ToggleButton的所有的属性。

使用if(v == b)代替if v.getId()

qjsjp
qjsjp   2012.10.29 16:25

运行不了,什么异常信息?
你问如何获取id,首先你要给你的button设置一个ID,然后用get方法可以获取啊!

znl_12
znl_12   2012.10.29 18:24
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    int i= b.getId();
    switch (v.getId())
    {
        case i:
            Log.d("Button 0","Button 0 pressed");
            break;
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!