Android从元数据中读取自定义xml资源

时间:2012-11-16 07:58:02

标签: android xml metadata splash-screen

我正在编写一个包含启动画面活动的库,我希望能够通过将res / xml / resource传递给AndroidManifest.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>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是一个迟到的答案,但万一它可以帮助别人。在尝试使用AttributeSet之前,请插入以下代码块:

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