2014-10-19 81 views
1

我試圖以編程方式將layout.xml文件的id傳遞給View.inflate方法,但我不知道該怎麼做。我有一個測試代碼,我正在努力工作,正如你會看到我試着把它作爲一個字符串傳遞,但不起作用。Android將R.layout.extra_layout傳遞給View.inflate動態

任何想法?我的謝意。

LinearLayout main = (LinearLayout) findViewById(R.id.mainLayout);  
for (int i = 0; i < 3; i++) { 
     String boxToInflate="R.layout.box"+Integer.toString(i); 
     LinearLayout ll = (LinearLayout) View.inflate(MainActivity.this, boxToInflate, null); 
     main.addView(ll); 
} 

編輯:幾分鐘後。

我想我可能會作出與此測試代碼一些進展:

// Get outer relative layout 
    LinearLayout main = (LinearLayout) findViewById(R.id.mainLayout); 
    for (int i = 0; i < 3; i++) { 
     // String boxToInflate="R.layout.box"+Integer.toString(i); 
     int resID = getResources().getIdentifier("box" + i, "id", 
       getPackageName()); 
     LinearLayout ll = (LinearLayout) View.inflate(MainActivity.this, 
       resID, null); 
     main.addView(ll); 
    } 

回答

2
int layoutId = getResources().getIdentifier("box"+i, "layout", getPackageName()); 

它也適用於其他像繪項目(「繪製」,而不是「佈局」)等只需更換第二個參數。

編輯:看到你的編輯,只需用「佈局」替換「ID」,你很好。

+0

感謝Stephane,感謝 - 我發現id需要更改爲佈局。 – 2014-10-19 16:22:06

+0

如果它起作用,您應該將我的答案標記爲已接受。 – 2014-10-19 16:54:48

+0

對不起Stephane,現在就解決了。 – 2014-10-20 17:35:13