Java 添加第一个按钮后,在Android中动态添加按钮不起作用

Java 添加第一个按钮后,在Android中动态添加按钮不起作用,java,android,button,Java,Android,Button,我在代码中创建了一个按钮,它有一个单击事件的侦听器。每次单击按钮时,它都应生成另一个按钮,并将其添加到原始按钮下方。但是,无论我单击第一个按钮多少次,它只会添加一次动态按钮,而不会再添加 这是我的代码: public class DynaminControlActivity extends Activity { private RelativeLayout container; private int mainIdCnt = 0; private int mainId =

我在代码中创建了一个按钮,它有一个单击事件的侦听器。每次单击按钮时,它都应生成另一个按钮,并将其添加到原始按钮下方。但是,无论我单击第一个按钮多少次,它只会添加一次动态按钮,而不会再添加

这是我的代码:

public class DynaminControlActivity extends Activity {
    private RelativeLayout container;
    private int mainIdCnt = 0;
    private int mainId = 100;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        createMainButton();
    }

    public void createMainButton() {
        container = (RelativeLayout) findViewById(R.id.workLayout);
        Button b = new Button(this);
        b.setId(mainIdCnt + mainId);
        CharSequence text = "Main +";
        b.setText(text);
        container.addView(b);
        if (mainId > 0) {
            mainId++;
        }
        b.setOnClickListener((new View.OnClickListener() {
            public void onClick(View v) {
                createDynamicButton();
            }
        }));
    }

    public void createDynamicButton() {
        container = (RelativeLayout) findViewById(R.id.workLayout);
        Button b = new Button(this);
        CharSequence text = "Main +";
        b.setText(text);
        RelativeLayout.LayoutParams relLayout = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        relLayout.addRule(RelativeLayout.BELOW, mainIdCnt + mainId);
        container.addView(b, relLayout);
        if (mainId > 0) {
            mainId++;
        }
    }
有几件事

如果主布局是线性布局,则不需要添加规则来指示按钮应显示在现有按钮下方-它将自动添加到布局的最底部垂直对齐或最右侧水平对齐

所有按钮都有相同的文本。您确定每次都在单击第一个按钮吗?我注意到只有你的第一个按钮上有一个侦听器,所以如果你不小心点击了其他按钮中的一个,那么什么也不会发生

如果您打算添加多个按钮,它将快速扩展到大于屏幕大小,因此您应该确保您的主布局位于滚动视图中,以便可以看到您添加的所有按钮

对setId的调用可能与Android的内部工作有关。与其设置ID,不如让Android自动生成ID,如果需要引用,只需检索该值即可


我认为你不需要将id设置为all按钮,android在创建按钮时设置。尝试删除setid部分。删除b.setidmaincnt+MainId;再试一次,这是怎么回事?每次单击按钮时创建一个新按钮?或者每次单击1、然后单击2等按钮时更新按钮的标签?如果您的问题已得到回答,或者不再有效,请“勾选”以选择最合适的答案,以便所有人都知道问题已得到解决。谢谢