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和AbsoluteLayout2,但它不起作用。我们知道R.id.layoutid是罪魁祸首。那么我们该如何解决呢?
我使用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);
}
id是一个初始值,而不是字符串:希望你能从下面的代码中得到一个想法
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++;}