【问题标题】:Inflate XML file from internal memory从内部存储器扩充 XML 文件
【发布时间】:2011-11-19 22:24:24
【问题描述】:

我已将一个 XML 文件从 /assets 复制到我的应用程序数据文件夹 (data/data/package.name/files/)。我这样做是因为用户将能够修改大量数据,并且我想将这些数据保存到内部存储器中,然后在他们重新启动应用程序时再次加载。这一切都很好,使用根浏览器我可以看到 XML 文件已正确复制到数据目录。

现在我需要使用LayoutInflater 扩充这个 XML 文件。我将如何访问该文件?使用XmlResourceParserXmlPullParser

【问题讨论】:

  • 问题不在于写入内部存储..
  • 教程有参考openFileInput()。抱歉 - 我应该更明确地指出这一点。这样您就可以“访问该文件”。
  • 嗯,我想你说得有道理……也许我不够具体。我知道如何“访问”它,但我需要给它充气。
  • 对不起我的英语不好。我认为我们可以通过使用 XML 的标签动态创建视图来做到这一点。但我不知道它对android系统有好处。

标签: android file inflate


【解决方案1】:

您不能使用LayoutInflater 扩充该文件。首先,您只能扩充布局resources,不能扩充任意文件。其次,根据您第一段中的描述,它首先不是布局文件。

如果要解析任意 XML,请使用 DOM、SAX 或 XmlPullParser

【讨论】:

  • 嗯,它一个标准的Android XML文件。当用户按下保存按钮时,我会将他们的输入解析为 XML 文件。我会看看这些课程并回帖..谢谢!
  • 好的,我已经开始工作了(我在玩天际 :P)。我放弃将文件存储为典型的 Android XML 布局,现在使用XmlPullParser 加载它。我想“不,你不能”就足够了;)
  • @Snailer:是的,从任意来源扩充布局文件会很好。通过一些工作,您甚至可以破解解决方案。但它绝对不支持开箱即用。另外,我很抱歉假设您的原始文件实际上不是布局 - 它感觉更像是您编写的普通 XML 编码数据。
【解决方案2】:

来自Android view API

目前无法将 LayoutInflater 与 XmlPullParser 在运行时通过纯 XML 文件。

一个解决方案可能是在之前预处理 XML 文件。您必须以与 Android SDK 在构建时相同的方式压缩 XML 文件:

视图膨胀在很大程度上依赖于在构建时完成的 XML 文件预处理

我猜你必须调用XmlPullParser.setInput 来加载你预处理的XML,然后将XmlPullParser 传递给View.inflate。我希望即使是 APK 中没有的内容也可以做这种事情。

我对您能找到的任何解决方案都非常感兴趣。如果您找到或创建原型,请告诉我!这将是为我的开源应用程序创建插件架构的决定性一步。

【讨论】:

  • 我也想知道同样的事情。我想为我的 android 应用程序提供多个主题。主应用程序可以使用插件应用程序中加载的布局。那你有什么解决办法吗?或者任何建议、演示、原型,如果您找到或仍在寻找解决方案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
相关资源
最近更新 更多