0

作为这个问题的序言,我应该让大家知道这是我的第一个重要的 Android 项目。我有合理的编程背景,但对这个平台很陌生。我正在开发一个朋友的应用程序,在它落入我手中之前,它已经由许多其他方构建。什么是觅食指南,由图片和各种识别、用途、有毒部位等信息组成。用户不会插入他们自己的任何信息——基本上,它只是一个可搜索的大型库。

这是我的问题:现在,所有信息都来自 res/raw/ 中的多个 XML 文件,对应于不同类别的信息(即:植物、食谱)。有一个已实现的 XML 解析器,表面上用于读取 XML 文件的内容,然后填充与上述类别相对应的对象列表。每个类别都定义在自己的一个类中,这样的类别有 6 个。

我的工作是将这一切改成从我朋友已经创建的 SQLite 数据库中读取。现在每个类别对应数据库中的一个表,表的列对应于相关信息的各个位。这一切看起来都很简单。

使用在线许多易于遵循的教程之一,我认为我已经成功地基本上用数据库助手替换了 XML 解析器,该助手通过打开数据库并使用表中的元组填充类别列表来工作。我觉得我不需要对代码的其他部分进行实质性修改,数据源切换就可以正常工作。

我认为它有效,因为我删除了 XML 解析器,它在我的测试设备上编译并产生了相同的结果。然而,我意识到我错了——当我删除 res/raw/ 时,应用程序崩溃了。在重新克隆项目进行检查后,实际上似乎根本不需要 XML 解析器就可以将 XML 数据完美地读取到程序中!因此,我显然遗漏了有关将 XML 数据集成到应用程序中的位置/方式的重要信息。无论解析器是否存在,XML 都会被读取,但如果 XML 文件被删除,应用程序就会崩溃。

看起来应该很容易将元组作为对象转储到列表中,然后让现有代码像它们一样处理它们。这将让我避免大量修改其余代码,因为从直觉上看似乎没有必要。

谁能解释一下 XML 资源是如何工作的,以及为什么应用程序在没有解析器的情况下运行得很好?就像我说的那样,我不愿过多地使用已经存在的东西。基本上我需要一些关于执行此策略的建议,但一直找不到任何东西。

非常感谢你能给我的任何帮助。

4

1 回答 1

1

如果我理解正确,当应用程序启动时,它会从 xml 文件中填充数据库。如果是这样,当您删除文件并启动应用程序时,它应该会崩溃,因为不再有文件了。您可以做的是从其他脚本/程序中的 xml 文件预填充数据库文件。然后将数据库文件复制到assests文件夹中。现在您将不需要 xml 文件(因此只需删除它们)并使用您的 db 文件。

于 2013-11-02T05:29:30.223 回答