2 baby bonnie Baby_Bonnie 于 2013.01.10 14:24 提问

程序化添加按钮如何获得OnClick()方法?

我在程序中添加了一些buttons。

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;
    }
}

还是不能获取OnClick()方法,怎么能获取ID呢?

5个回答

ccchp
ccchp   2013.01.11 16:20
已采纳

你使用for循环生成了xml.size()个button,setId(id_button);id_button++

switch (v.getId())
    {
    case **id_button**: Log.d("Button 0","Button 0 pressed);
        break;
    }

这部分代码的id_button应该是最后一个按钮的ID,你点击最后一个按钮应该会打印出信息吧

yh_1108
yh_1108   2013.01.11 09:19

貌似这是JAVA的,MFC里面倒还是晓得点,设置ID后还需要关联的,然后添加Onclick事件处理函数,这个JAVA不晓得是不是这样

cytown
cytown   2013.01.10 17:41
public void onClick(View v) {
    int id = v.getId();
    if (id < id_button) {
        Log.d("Button " + id, "Button "+id+ " pressed");
    }
}
CSDN_Ask
CSDN_Ask   2013.01.10 16:55

你已经设置了button的id,例如id_button是吧
添加onCreate方法:

b1.setOnClickListener(this);    

在onClick方法中使用id

@Override
 public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v.getId() == R.id.id_button)
    {
    Log.d("Button 0","Button 0 pressed);
        break;
    }
}
HuiGeZhang
HuiGeZhang 是呀,同意LS
接近 5 年之前 回复
qq_27578023
qq_27578023   2016.06.03 20:54

你使用for循环生成了xml.size()个button,setId(id_button);id_button++

switch (v.getId())
{
case id_button: Log.d("Button 0","Button 0 pressed);
break;
}
这部分代码的id_button应该是最后一个按钮的ID,你点击最后一个按钮应该会打印出信息吧

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!