0

タイトルが曖昧で申し訳ありませんが、

以下、不具合です。x 変数を使用して、名前に 1 ~ 9 の値を使用するこのオブジェクトを反復処理したい ( R.id.imageButtonx)

for (int x = 1; x <10; x++)
    mm.add((Button) findViewById(R.id.imageButtonx));

// もう少し詳しく説明します。これはアンドロイド用です。

Button 配列から始めて、次のようにしました。

 main_Menu = new Button[] {
            (Button) findViewById(R.id.imageButton1),
            (Button) findViewById(R.id.imageButton2),
            (Button) findViewById(R.id.imageButton3),
            (Button) findViewById(R.id.imageButton4),
            (Button) findViewById(R.id.imageButton5),
            (Button) findViewById(R.id.imageButton6),
            (Button) findViewById(R.id.imageButton7),
            (Button) findViewById(R.id.imageButton8),
            (Button) findViewById(R.id.imageButton9)
        };

そのため、onbuttonclicklistener をアタッチするために 2 行の foreach ループを実行できます。

そこで、10 行を 2 行に減らすことができないかと考えました。ArrayList に移動しました。x変数を囲むのが角括弧、括弧、一重引用符、または二重引用符のようなものであることを望んでいましたが、答えの1つからは不可能のようです。

4

4 に答える 4

4

Java は、imageButtonx の「x」をループ変数でテキスト置換しません。

ただし、imageButton ID の配列を作成し、それぞれをインデックスで参照できます。

于 2013-05-25T14:40:15.800 に答える
0

アンドロイドと言えば

Resources.getIdentifier()このように使用します

int id = getResources().getIdentifier("imageButton" + x, "id", null);

String s = getString(id);
于 2013-05-25T14:42:01.807 に答える
0

どうですか

int[] imageButtons = { R.id.imageButton0, R.id.imageButton1, R.id.imageButton2, R.id.imageButton3, ...};
for (int x = 0; x <9; x++)
mm.add((Button) findViewById(imageButtons[i]));

これは適切に機能するはずです。:)

于 2013-05-25T14:44:23.133 に答える
0

Depending on what your exact needs are, you could do something similar with a separate function that returns one of the variables depending on a parameter. Something along the lines of:

public Button getButton(int index) {
    switch (index) {
        case 0: return button0;
        case 1: return button1;
        ...
        default: throw new ArgumentOutOfRangeException("index");
    }
}

Then you could replace your loop with something like:

for (int x = 1; x < 10; x++)
    mm.add((Button) findViewById(R.id.getButton(x)));
于 2013-05-25T14:42:34.847 に答える