当前位置: 首页 > 知识库问答 >
问题:

Android-传递数组通过点击

孙弘博
2023-03-14

作为我试图创建一个内存游戏的一部分,我已经在我的布局上放置了12个带有id名称的图像按钮ImageButton1... ImageButton12。我写了一个算法来创建一个名为卡[12]的数组,随机值来表示每个图像按钮后面的卡(card1... card6),例如,如果卡[5]=4,那么图像按钮6后面的卡是card4。现在,我试图告诉程序,当使用数组单击图像按钮时,显示认可卡。我对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
            }
        }

非常感谢您的帮助,谢谢!

共有2个答案

从烈
2023-03-14

您已经将卡[]声明为onCreative方法中的局部变量。请到外面申报一下试试。

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);
    }
壤驷旭
2023-03-14

因为您在本地声明您的卡片数组在您的OnCreative()中,您不能在其他方法中访问它。

您只需全局声明您的卡阵列。

public class Memory extends AppCompatActivity implements OnClickListener{

    int[] cards;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    int i;
    cards = new int[12];
    ...
}
 类似资料:
  • 当我点击按钮时: -迭代所有tr并将其所有输入的名称收集到数组(这已经完成了) - 我还从输入和触发名称的两个文本中获取数据 - 通过ajax将所有(一个数组和两个文本)发送到asp.net.cs(不起作用)

  • 问题内容: 下面是我的部分代码,但我的问题很简单,当用户单击“我”时如何对我的函数说data-id =“ 1” ? 问题答案: 由于您已经在使用ES6- 在这里使用箭头功能可能会更干净一些:

  • 问题内容: 我想将我的Swift传递 给引用(这样,当我向添加聊天时,仍指向)。即,当更改长度时,我不希望Swift将两个数组分开。 问题答案: Swift中的结构按值传递,但是您可以使用修饰符来修改数组(请参见下面的答案)。类通过引用传递。和在Swift中实现为结构。

  • 问题内容: 我正在尝试将字符串数组作为POST数据传递给PHP脚本,但是不确定该怎么做。 这是到目前为止我执行PHP脚本的代码: 我试图传递数组的地方: 调用PHP脚本: 以及相关的PHP脚本: 有任何想法吗?谢谢 ! 编辑 我正在尝试以下方法,但仍不满意: 这就是我所有的“错误报告” … 问题答案: 要将查询字符串中的数组传递给php,您应该添加到标识符并将每个项目都添加为单独的条目,因此这样的

  • 问题内容: 我正在使用PhantomJS page.evaluate()进行抓取。我的问题是我传递到Webkit页面的代码是沙盒化的,因此无法访问我的主要幻象脚本的变量。这使得很难使抓取代码通用。 如何将参数推入页面? 问题答案: 我遇到了确切的问题。可以使用一些技巧,因为它也可以接受字符串。 有几种方法可以执行此操作,但是我使用了一个称为的包装器,该包装器接受其他参数以传递给必须在Webkit端

  • 是否可以使用UI将项目数组传递到swagger块中的单个参数中?我在ruby\rails应用程序中使用它。请求类型是GET。 我有一个接受许多参数的搜索 API。所有这些都是单一值,但一个设施除外。它接受一个项目数组,并且可以使用类似于下面显示的 URL 进行调用(下面的示例显示了传递的两个值 1 和 2)。 我的参数是这样设置的: 当我在swagger中传递数组作为参数时,EG[1]会生成以下U