我们如何使用R.id变量(How can we use a variable in R.id)

2019-06-27 16:04发布

XML的内容是

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainFrame"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<AbsoluteLayout
    android:id="@+id/AbsoluteLayout1"
    android:layout_width="match_parent"
    android:layout_height="172dp"
    android:layout_x="12dp"
    android:layout_y="26dp"
    android:visibility="invisible" >

</AbsoluteLayout>

  <AbsoluteLayout
    android:id="@+id/AbsoluteLayout2"
    android:layout_width="match_parent"
    android:layout_height="172dp"
    android:layout_x="20dp"
    android:layout_y="184dp" android:visibility="invisible">

</AbsoluteLayout>

</AbsoluteLayout>

这里的主代码

String layoutid;
int ctr = 1;
AbsoluteLayout [] mainlayout = new AbsoluteLayout[12];

   while (ctr<3)
   {
        layoutid = "AbsoluteLayout" + ctr;
        mainlayout[ctr] = (AbsoluteLayout)findViewById(R.id.layoutid);
        ctr++;
   }

我们需要一个循环,使

 ctr = 1 
 AbsoluteLayout + ctr = AbsoluteLayout1 
 ctr++; 

 AbsoluteLayout + ctr = AbsoluteLayout2

我们要声明AbsoluteLayout1和AbsouluteLayout2,但它不工作。 我们知道,R.id.layoutid是罪魁祸首。 那么,如何才能解决这个问题?

Answer 1:

我用解决方法则getIdentifier它

Button[] buttons; 
for(int i=0; i<buttons.length; i++) {
{
   String buttonID = "sound" + (i+1);

   int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
   buttons[i] = ((Button) findViewById(resID));
   buttons[i].setOnClickListener(this);
}


Answer 2:

该ID是intiger值不是字符串:希望你会从下面的代码得到一个想法

 while (ctr<3)
{
   int layoutid;
    if(ctr==1)
    { layoutid = R.id.AbsoluteLayout1;}
    else{
     layoutid = R.id.AbsoluteLayout2;}
    mainlayout[ctr] = (AbsoluteLayout)findViewById(layoutid);
    ctr++;
}
---------------------------------------------

所有这些韩元发布一个错误,因为他们的处理方式INT本身操纵,只要你想,你不能用这个,因为它是

int[] ctra={R.id.xx,R.id.xxx};
  int i=0;
 while (ctr<3)
{
mainlayout[i]=(AbsoluteLayout)findViewById(ctra[i]);
i++;}


文章来源: How can we use a variable in R.id