我正在编写一个包含启动画面活动的库,我希望能够通过将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>
非常感谢任何帮助。
答案 0 :(得分:0)
这是一个迟到的答案,但万一它可以帮助别人。在尝试使用AttributeSet之前,请插入以下代码块:
int type;
while ((type=parser.next()) != XmlResourceParser.END_DOCUMENT
&& type != XmlResourceParser.START_TAG) {
}