我已经将一个 XML 文件从/assets
我的应用程序数据文件夹 ( data/data/package.name/files/
) 中复制了出来。我这样做是因为用户将能够修改大量数据,并且我想将这些数据保存到内部存储器中,然后在他们重新启动应用程序时再次加载。这一切都很好,使用根浏览器我可以看到 XML 文件已正确复制到数据目录。
现在我需要使用LayoutInflater
. 我将如何访问该文件?用XmlResourceParser
or XmlPullParser
?
您不能使用LayoutInflater
. 首先,您只能扩充布局资源,不能扩充任意文件。其次,根据您第一段中的描述,它首先不是布局文件。
如果要解析任意 XML,请使用 DOM、SAX 或XmlPullParser
.
目前无法在运行时在纯 XML 文件上使用带有 XmlPullParser 的 LayoutInflater。
一个解决方案可能是之前预处理 XML 文件。您必须以与 Android SDK 在构建时相同的方式压缩 XML 文件:
视图膨胀严重依赖于在构建时完成的 XML 文件的预处理
我猜你将不得不调用XmlPullParser.setInput
来加载你预处理的 XML,然后将 XmlPullParser 传递给View.inflate
. 我希望即使对于 APK 中没有的内容也可以做这种事情。
我对您能找到的任何解决方案都非常感兴趣。如果您找到或创建原型,请告诉我!这将是为我的开源应用程序创建插件架构的决定性一步。