动态创建按钮并从中调用操作

时间:2015-01-31 06:35:50

标签: android button runtime invoke

我在Android上编程。我动态创建一个按钮(即在运行时不使用布局)。现在我需要从动态创建的按钮调用一个动作。这可能吗?

我已使用以下代码动态创建按钮。



Button btnNew = new Button(this);
String text = etName.getText().toString();
btnNew.setText(text);
llMain.addView(btnNew, lParams);




现在我需要使用btnNew

来调用/触发某些内容

感谢所有帮助。 感谢。

5 个答案:

答案 0 :(得分:0)

您可以通过设置侦听器

在该特定按钮上执行多个事件
btnNew.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

            }
        });

答案 1 :(得分:0)

尝试使用以下代码

 Button btnNew = new Button(this);
 btnNew.setId(111);
 btnNew.setOnClickListener(this);

 Button btn2 = new Button(this);
 btn2.setId(222);
 btn2.setOnClickListener(this);

 you can implement onclick listener in your activity 

在onclick视图中,您可以检查下面的ID

@Override
    public void onClick(View v) {
        switch (v.getId()) {
        case 111:
            //do some thing here
           break;
         case 222:
            //do some thing here
           break;
 }
};

答案 2 :(得分:0)

您可以使用“OnClickListener”

对按钮执行多项操作
btnNew.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            //action here .. which you want to perform
        }
    });

答案 3 :(得分:0)

您可以使用以下代码:

Button dynamicBtn = new Button(this); // or new Button(getActivity());
dynamicBtn.setTag(100);
dynamicBtn.setOnClickListener(this);

// Override below in fragment or activity that implements 
// 'View.OnClickListener'

@Override
public void onClick(View v) {
        switch ((Integer)v.getTag()) {
        case 100:
            //do something
           break;
        default:
           break;
 }
};

答案 4 :(得分:0)

Button dynamicButton = new Button(this);
dynamicButton.setTag(new ButtonTag(100, new ButtonTag.Callback() {
    @Override
    public void run() {
        // run anything here
    }
}));

@Override
public void onClick(View view) {
    ButtonTag tag = (ButtonTag)view.getTag();
    tag.execute();

    // simpler ((ButtonTag)view.getTag()).execute();
}

// don't think you need id anymore 
public static class ButtonTag{

    private Callback callback;
    private int id;

    public ButtonTag(int id, Callback callback){
        this.callback = callback;
        this.id = id;
    }

    public void execute(){
        callback.run();
    }

    public interface Callback{
        public void run();
    }
}