我正在尝试构建一个for函数来创建具有随机案例的多个按钮。
我不知道如何使用我的变量创建这些按钮?
以下是我的代码部分:
位置字符串用于确定我正在创建的按钮。 showButton string用于确定我正在使用的按钮ID。
string showButton, position;
for(int i = 1; i<=12; i++)
{
showButton = "imagebutton" + i;
position = "position" + i;
Random random = new Random();
int randomNum = random.Next(1,4);
switch (randomNum)
{
case 1:
ImageButton position = FindViewById<ImageButton>(Resource.Id.showButton);
position1.SetImageResource(Resource.Drawable.buttonGreen);
btnPosition.Click += (o, e) =>
{
Toast.MakeText(this, "Você venceu", ToastLength.Short).Show();
};
break;
case 2:
SetContentView(Resource.Layout.Main);
ImageButton position = FindViewById<ImageButton>(Resource.Id.showButton);
position.SetImageResource(Resource.Drawable.buttonYellow);
position.Click += (o, e) =>
{
Toast.MakeText(this, "Você Venceu", ToastLength.Short).Show();
};
break;
case 3:
SetContentView(Resource.Layout.Main);
ImageButton position = FindViewById<ImageButton>(Resource.Id.showButton);
position.SetImageResource(Resource.Drawable.buttonRed);
position.Click += (o, e) =>
{
Toast.MakeText(this, "Você Perdeu", ToastLength.Short).Show();
};
break;
}
答案 0 :(得分:0)
我发现代码存在一些问题。首先,您声明两个string
类型的变量,即showButton
和position
。然后在交换机的内部范围内再次声明后者。因此,当您离开该范围并引用position
时,您将获得string
变量而不是按钮,我不确定是否有意。
接下来我认为您正在尝试将showButton
变量用作Resource.Id.
和showButton
的组合,这不起作用! Resource.Id.<someId>
都在Resource.Designer.cs
文件中定义,该文件是在每个构建中从您在axml文件中定义的ID中生成的。不能像这样引用字符串名称中的变量。你可以做的是让一个方法从showButton
变量返回按钮的正确ID。
此外,您似乎已经将所有按钮添加到Main.axml
文件中,我认为您想要做的是给新按钮充气,然后在需要时将它们添加到Main.axml
文件中,根据您的position
变量定位。
所以在这里你应该用你的按钮定义创建一个新的axml文件。在代码中对其进行充气,然后将其添加到视图中。