作为我尝试创建记忆游戏的一部分,我在我的布局上放置了12个图像按钮,ID名称为imageButton1 ... imageButton12。我写了一个算法来创建一个名为cards [12]的数组,其中随机值代表哪个卡(card1..card6)位于每个imageButton后面,例如,如果cards [5] = 4,那么imageButton6后面的卡就是card4。 现在,我试图告诉程序在使用数组单击imageButton时显示appropraite卡。我是android studio的新手,据我所知,我首先需要在所有按钮上使用OnClickListener,所以我使用循环完成它。到目前为止,这是我的代码:
public class Memory extends AppCompatActivity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memory);
int i;
int[] cards = new int[12];
// Algorithm here
for(i=1;i<=12;i++) {
String name = "imageButton" + i;
int resID = getResources().getIdentifier(name, "id", "com.amir.supermemory");
ImageButton btn = (ImageButton) findViewById(resID);
btn.setOnClickListener(this);
}
现在出现了onClick功能,该功能执行单击时切换适当图像的操作。问题是我无法将之前创建的数组卡[]传递给函数(它说“无法解析符号'卡'”),我该怎么做?
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageButton1:
ImageButton b = (ImageButton) findViewById(R.id.imageButton1);
String name = "card" + cards[0]; //cards is shown in red
int resID = getResources().getIdentifier(name, "drawable", "com.amir.supermemory");
b.setImageResource(resID);
break;
//copy paste forr all imageButtons
}
}
感谢任何帮助,谢谢!
答案 0 :(得分:1)
因为您在OnCreate()中本地声明了卡片阵列,所以无法使用其他方法访问它。
您需要做的就是全局声明您的卡片阵列。
public class Memory extends AppCompatActivity implements OnClickListener{
int[] cards;
@Override
protected void onCreate(Bundle savedInstanceState) {
int i;
cards = new int[12];
...
}
答案 1 :(得分:0)
您已将cards []声明为onCreate方法中的局部变量。请在外面宣布并尝试。
public class Memory extends AppCompatActivity implements OnClickListener{
int[] cards = new int[12];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memory);
int i;
// Algorithm here
for(i=1;i<=12;i++) {
String name = "imageButton" + i;
int resID = getResources().getIdentifier(name, "id", "com.amir.supermemory");
ImageButton btn = (ImageButton) findViewById(resID);
btn.setOnClickListener(this);
}