3 回答
TA贡献1900条经验 获得超5个赞
这是因为在将按钮添加到布局后,您将启动新的 Activity,无论它是同一个 Activity。每当创建活动时,它将始终使用初始 xml 格式。我认为您的印象是添加新按钮将持续存在并成为 XML 的一部分。如果你想开始新的活动,那不是真的。在 Bundle 中设置新的 Button 值,然后在 onCreate 检查 bundle 的存在。如果存在,则添加一个新按钮。
int buttonId = -1;
protected void onCreate(Bundle b){
//set the layout related stuff first
Bundle b = getIntent().getExtras();
if(b!= null && (b.getInt(NEW_BUTTON_KEY, -1)!=-1)){
buttonPanel = (LinearLayout)findViewById(R.id.LinearButtonPanel);
for(int i = 0; i< b.getInt(NEW_BUTTON_KEY, -1); i++)
Button newButton = new Button(this);
newButton.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
newButton.setId(i);
newButton.setText("Button " + i);
buttonPanel.addView(newButton);
}
}
顺便说一下,你为什么要进行新的活动?只需在同一个活动中添加按钮,否则您的活动堆栈将随着每个级别变得庞大。
TA贡献1802条经验 获得超6个赞
Button newButton = new Button(null);
你给上下文空,我建议你给适当的上下文。您也可以为按钮设置标签newButton.setTag(value)
TA贡献1794条经验 获得超7个赞
您的代码不正确,您创建一个按钮并添加到 LinearLayout,然后调用 startActivity 以加载 Activity。所以你重置了 LinearLayout 并清除了按钮。
你应该 :
run = (Button)findViewById(R.id.btnRunChallengeMode);
run.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent newForm = new Intent(Form2.this,Form2.class);
newForm.putExtra("a", a);
startActivity(newForm);
}
});
并在 create 中,获取 Extras :
String a = getIntent().getIntExtra("a");
现在您可以创建按钮了。
添加回答
举报