5

私はただ知りたいだけです。for ループを使用して ID を作成する方法はありますか

xml に 10 個のボタンがあります。IDがありbutton1,button2,button3... button10 ます今、ボタンの配列を作成し、このようjava classにします

public class Menu extends Activity
{
    Button[] arrayButton=new Button[10];

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

        init();
    }

    private void init()
    {
        for(int i=1 ; i<9 ; i++)
        {
            String abc = "but"+String.valueof(i);
            int x = Integer.parseInt(abc);


            Log.d("abc", abc);

            Log.d("x", String.valueOf(x) );

            //arrayButton[i] = (Button) findViewById(R.id.x);  // giving error 

            //arrayButton[i].setText("Hello:");
        }
    }

}

どうすればこの種の仕事ができるのか知りたいです。forループを使用してすべてのボタンを取得して、作業を高速化し、すべてのボタンのテキストを設定したいときがあります。

4

5 に答える 5

3

getResources().getIdentifierのように使う

String abc = "but"+String.valueof(i);
int resID = getResources().getIdentifier(abc, "id", getPackageName());
arrayButton[i] = (Button) findViewById(resID );
arrayButton[i].setText("Hello:");

init()つまり、単にメソッドを次のように書き換えます

private void init()
    {
        for(int i=1 ; i<9 ; i++)
        {
            String abc = "but"+String.valueof(i);
            int resID = getResources().getIdentifier(abc, "id", getPackageName());
            arrayButton[i] = (Button) findViewById(resID);
            arrayButton[i].setText("Hello:");
        }
    }

または簡単に使用できます

    int[] buttonIDs = new int[] {R.id.but1, R.id.but2, R.id.but3,R.id.but4, ... }
    for(int i=0; i<buttonIDs.length; i++) {
        Button b = (Button) findViewById(buttonIDs[i]);
        b.setText("Hello:" + b.getText().toString());
}
于 2014-08-12T07:27:34.397 に答える
2

すべての ID がすでにわかっている場合は、次のように簡単に使用できます。

int [] ids = new int [] {R.id.btn1, R.id.btn2, ...};
Button [] arrayButton = new Button[ids.length];

for(int i=0 ; i < arrayButton.length ; i++)
{
  arrayButton[i] = (Button) findViewById(ids[i]);
}

または、それらがわからない場合は、次を使用します。

getResources().getIdentifier("btn1","id",getPackageName())
于 2014-08-12T07:27:46.687 に答える