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等按钮时更新按钮的标签?如果您的问题已得到回答,或者不再有效,请“勾选”以选择最合适的答案,以便所有人都知道问题已得到解决。谢谢