java - 使用for循环android将按钮变量声明为数组

标签 java android arrays variables for-loop

我设法在 for 循环中创建了按钮,但没有理由不在其中声明我的变量。不幸的是,eclipse 只识别“bt”,不想用它在循环中代表的数字替换我的 [i],结果在我的布局中找到正确的 id。关于如何使这项工作有任何想法吗?我也很高兴有任何其他像我一样漂亮的解决方案,但它不起作用 ;)

Button [] bt = new Button[6];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start_layout);

    bt[0] = (Button) findViewById(R.id.bt0);
    bt[1] = (Button) findViewById(R.id.bt1);//This is what i'm trying to replace
    bt[2] = (Button) findViewById(R.id.bt2);
    bt[3] = (Button) findViewById(R.id.bt3);
    bt[4] = (Button) findViewById(R.id.bt4);
    bt[5] = (Button) findViewById(R.id.bt5);


    for (int i=0; i<6; i++) {
        final int b = i;
        bt [i] = (Button)findViewById(R.id.bt[i]);    <----//Whith this
        bt [i].setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent myIntent = new Intent(Start.this, MainActivity.class);
                myIntent.putExtra("players", b);
                startActivity(myIntent);

                //startActivity(new Intent(Start.this, MainActivity.class));
            }
        });

    }
}

最佳答案

我会做以下事情:

private static final int[] idArray = {R.id.bt0, R.id.bt1, R.id.bt2, R.id.bt3, R.id.bt4, R.id.bt5};

private Button[] bt = new Button[idArray.length];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start_layout);

    for (int i=0; i<idArray.length; i++) {
        final int b = i;
        bt [b] = (Button)findViewById(idArray[b]); // Fetch the view id from array
        bt [b].setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent myIntent = new Intent(Start.this, MainActivity.class);
                myIntent.putExtra("players", b);
                startActivity(myIntent);

                //startActivity(new Intent(Start.this, MainActivity.class));
            }
        });

    }
}

如果你想添加或删除按钮,只需将它添加到 idArray 中,所有其他的东西都已经是动态的了。

关于java - 使用for循环android将按钮变量声明为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13949092/

相关文章:

Java String 在 Scanner 中的 Boolean.parseBoolean 之前替换多个字符串?

java - 不知道密码时如何重置 keystore ?

android - Theme.AppCompat.Light get Actionbar 在 API 11 中返回 null

android - 想要 TextView 通过单击来改变颜色,就像单击按钮一样

php - 如何在 foreach 循环内设置成员值

c++ - 编译器不喜欢我的 C++ 类。获取未声明的标识符错误等等

java - 在java中的二维数组中的指定位置插入元素或删除元素

java - 最后一次尝试 SSL/TLS

java - Android 使用单一方法对不同表进行 CRUD 操作

java - 如何让JTextArea在Java中占据GridBagLayout最大宽度的80%