在 android Studio 中获取 table 布局中的所有按钮

Get all Buttons In table layout in android Studio

我正在尝试在 android 中实现一个井字游戏来学习基础知识。我想实现逻辑的方法如下。

  1. 检查是否有任何按钮仍然是默认文本。如果是,那么我们仍然可以玩游戏,并且盒子还没有完全填满。 (为此,我想检查 table 视图中所有按钮的文本。我想我可以通过某种方式制作所有按钮的数组列表来获得它)。

我想要一个数组列表中的所有这些按钮。 这是我的层次结构

我从 this SOF 页面得到灵感并尝试这样做。

protected void isboxEmpty()
    {
        for (int i = 1; i <=9 ; i++)
        {
            int id = getResources().getIdentifier("button" + i, "id", getPackageName());
            button[i] = (Button) findViewById(id);
            Log.d("poi",button[i].getText().toString());
        }
    }

但我不知道它的作用和作用。请帮我解决这个问题。

protected void isboxEmpty()
    {
        for (int i = 1; i <=9 ; i++)/psoo-s
        {
            int id = getResources().getIdentifier("button" + i, "id", getPackageName());
            button[i] = (Button) findViewById(id);
            Log.d("poi",button[i].getText().toString());
        }
    }

你问这是什么,它循环遍历框(这可能是 java class 中所有按钮的数组)

int id 从您的 XML 文件中获取按钮 1-9,这就是您将按钮放入数组的方式。确保 XML 文件中按钮的名称是 button1 或 button2 或 button3...

按钮[i]-所以 i 是 1-9,您对 findviewbyid 的说法是查找此按钮并将其放置在数组中的特定位置-i(1-9)。

按钮是一种数据类型,如整数、布尔值...

log.d 将在其中一个终端中打印 所以您实际上并没有将 XML 中的按钮放入 java class 中的数组中。 如果你想让你的循环工作然后把它改成这个

        buttonrestart = (Button) findViewById(R.id.buttonrestart);
        for(int i=0;i<button.length;i++){
            int resID= getResources().getIdentifier("button"+i,"id", getPackageName());
            button[i]=findViewById(resID);
            button[i].setOnClickListener(this);//add this because you want something to happen when you click on the button right?
        }

在 setOnClickListener(this) 上确保你实现了 onClick 函数 对于 TicTackToe,我建议您对代码使用 MVC(Model-View-Controller) java classes。 祝你好运,如果你还需要什么,请告诉我。在 onclick 函数中,您将应用您的逻辑来处理棋盘上发生的事情 - 是否出现 x 或 o,有人赢了还是平局或轮到谁了?

编辑:
除非已经存在,否则您无法获得 ArrayList!因此你需要先创建一个数组,这里一个常规的按钮数组就足够了。 这里是一个按钮数组,私有告诉你它只属于这个class。在你的例子中,这并不重要,所以你可以取消私人,但如果你确实遇到了问题,那么请随时阅读私人。 Button[] 告诉你它的类型 Button,button 是名称,new button 告诉你你正在创建一个新数组。 9 告诉你数组的长度是 9。记住索引从 0 开始到 9(不包括索引 9) 所以索引是:1 2 3 4 5 6 7 8

private Button[] button= new Button[9];

一个普通的整数数组如下所示:

int[] arr = new int[9];

你能看出按钮数组和普通整型数组在结构上的相似之处吗?

此代码紧跟在

之后
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

public class MainActivity extends AppCompatActivity