2011-11-23 36 views
1

我希望能夠遍歷xml佈局文件列表,而不必在setContentView參數中指定特定的佈局文件。有沒有辦法動態設置setContentView(int id)?

明顯的類型是不正確的,但這樣的:

ArrayList<String> pages = new ArrayList<String>(); 
//(Where each of the xml pages are stored like R.layout.page1, R.layout.page2, etc) 
setContentView(pages.get(0)); 

這可能不知?

+1

你想達到什麼視覺效果? –

+0

@Sergey Rudchenko我只需要能夠根據需要加載儘可能多的xml佈局文件,並循環顯示它們,而無需爲每個佈局文件編寫獨立的活動類。 – Neeta

+0

這可能是某種可重用的活動類。但仍不清楚目標是什麼。 –

回答

3

您應該改用ViewFlipper小部件。這是一個example

以這種方式管理內容視圖及其子部件更爲清晰。

無論如何,可以使用Resources.getIdentifier方法從名稱中獲取資源ID。

+0

這真是太好了,謝謝你,正是我所需要的。它還使我能夠輕鬆地在視圖之間前後移動! – Neeta

2

是的。這是可能的。但有兩個注意事項:

  1. ID被int S,不String秒。
  2. 您需要正確管理裏面的視圖。
+0

我知道他們是整數,但我不知道如何動態地找到xml佈局文件的int ID。 – Neeta

+0

@Neeta我以爲你想將'id's存儲在列表中。 – MByD

+0

@Neeta如果我明白你想要什麼,你應該閱讀:http://stackoverflow.com/questions/4427608/android-getting-resource-id-from-string – MByD

2

在我創造我用下面的代碼的圖像按鈕設置爲特定資源的應用:

imgBtnCard.setImageResource(this.getResources() 
    .getIdentifier("com.twp.cptshitface:drawable/" + 
     cardType + cardDetails[1] , null, null)); 

我會說,這是你在找什麼:

int resLayoutId = this.getResources(). 
    getIdentifier("your.package.namespace:layout/" + 
    pages.get(0), null, null); 

setContentView(resLayoutId); 
// where pages.get(0) returns a string such as "main2" 

我已經在onCreateMethod中快速測試了這段代碼。

記得清理你的項目,如果你添加更多的佈局和/或資源,所以ID的更新!

相關問題