2012-11-16 42 views
0

我正在編寫一個包含啓動畫面活動的庫,我希望能夠通過將res/xml /資源傳遞給該活動的元數據來配置它AndroidManifest.xml文件。Android從元數據中讀取自定義xml資源

這是我如何加載庫中的xml資源,但屬性計數始終爲-1。我知道res如果明確地指向正確的資源,因爲我調用了getResourceName,並且它是正確的。

int res = metaData.getInt(METADATA_SPLASH, 0); 
XmlResourceParser parser = getResources().getXml(res); 
AttributeSet attrs = Xml.asAttributeSet(parser); 

而且,在我的應用我的xml資源是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<splash xmlns:lib="http://schemas.android.com/apk/res-auto" 
    lib:caption="@string/copyright" lib:drawable="@drawable/logo_aperture" 
    lib:activity=".ui.HomeActivity"> 
</splash> 

最後,在我的圖書館我已經在attrs.xml文件如下定義的屬性:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="drawable" format="reference"></attr> 
    <attr name="caption" format="string"></attr> 
    <attr name="activity" format="string"></attr> 
</resources> 

任何幫助將不勝感激。

回答

0

這是一個較晚的答案,但以防萬一它可以幫助別人。在嘗試使用AttributeSet之前,插入以下代碼塊:

int type; 
while ((type=parser.next()) != XmlResourceParser.END_DOCUMENT 
    && type != XmlResourceParser.START_TAG) { 
}