我正在制作一个游戏,其中平台将在用户清除的每个级别中添加新按钮。但是我无法在运行时在项目中添加新的xml标记。我对使用什么或如何实现有些迷惑。
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);
buttonPanel = (LinearLayout)findViewById(R.id.LinearButtonPanel);
Button newButton = new Button(null);
newButton.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
newButton.setId(a);
newButton.setText("Button " + a);
buttonPanel.addView(newButton);
a++;
startActivity(newForm);
}
});
下面是xml代码
<HorizontalScrollView
android:id="@+id/buttonPanelChallengeMode"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_below="@+id/IDE"
android:layout_marginBottom="3dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:background="@color/colorPrimary"
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_editor_absoluteX="8dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/LinearButtonPanel">
</LinearLayout>
</HorizontalScrollView>
答案 0 :(得分:0)
Button newButton = new Button(null);
您将上下文设置为空,我建议您提供适当的上下文。您也可以使用newButton.setTag(value)
答案 1 :(得分:0)
这是因为在将按钮添加到布局后,无论相同的活动,您都将启动新的活动。每当创建活动时,它将始终使用初始xml格式。我认为您的印象是添加新按钮将继续存在并成为XML的一部分。如果要启动新活动,那是不对的。在Bundle中设置新的Button值,然后在onCreate中检查是否存在bundle。如果存在,则添加一个新按钮。
context.Response.ClearContent();
context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
context.Response.End();
请问您为什么进行新活动?只需在同一活动中添加按钮,否则您的活动堆栈将随着每个级别而变得庞大。
答案 2 :(得分:0)
您的密码不正确 您创建一个按钮并添加到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");
现在您可以创建按钮了。