我认为以下情况很常见,但我无法想出实现它的方法:
我们有三个活动和一个数据库。我们要求用户输入数据库中的搜索。查询应该是none,one或者结果。
问题在于,为了知道结果的数量,您需要在第一个活动中进行查询(并获取光标)。如果您获得多个结果,则需要将数据(传递光标?)发送到列表活动。在列表活动中再次执行查询可能不对,对吧?
我知道您可以通过使用内容提供商来共享游标,但由于活动来自同一个应用程序并且数据是私有的(外部没用),所以不要认为可以让其他任何人使用它。
我在这里读到你可以创建一个可分割的光标并将其发送到捆绑包中,但我不确定这是否是正确的用途。
有关如何解决这个问题的想法吗?
提前致谢。
答案 0 :(得分:3)
选项#1:搜索活动执行的查询只是SELECT _ID FROM
...在“无”情况下,它显示消息。在“one”情况下,它将匹配_ID
传递给详细活动,以通过查询获取该行的所有所需列来查看匹配。在“很多”情况下,它将搜索项传递给列表活动,列表活动运行完整查询(包括显示列表所需的所有列)。
选项#2:将搜索活动和列表活动合并为一个活动。基本上,将“搜索并选择要查看的项目”视为“UI事务”,并在一个活动中完成所有操作。搜索活动将执行足以在“很多”情况下填充列表的查询,通过AlertDialog
或其他内容在ViewFlipper
或主活动本身中显示列表。在“无”情况下,它显示消息。在“一个”情况下 - 或者当用户点击列表中的条目时 - 它将内容传递给详细活动以查看该项目。
选项#3:将您的搜索查询移至列表活动 - 您的搜索活动会通过附加内容将搜索信息传递给列表活动,该附加内容会rawQuery()
中的onCreate()
。列表活动处理“无”和“很多”情况。在“一”的情况下,它只是在详细活动和startActivity()
上调用finish()
,因此当用户按下BACK时,控件将返回搜索活动。
在其他条件相同的情况下,我可能选择#2选项。