繁体   English   中英

在活动之间共享游标

[英]Sharing cursor between Activities

我认为以下场景很常见,但我无法想出实现它的方法:

我们有三个活动和一个数据库。 我们要求用户输入数据库中的搜索。 查询应该是none,one或者结果。

  • 如果没有,您可以通知用户。
  • 如果只有一个,则使用正确的视图在新活动中显示它。
  • 如果你得到很多,你可以在列表中显示它们,让用户选择正确的一个,然后将其传递给活动,该活动只显示一个结果的数据。

问题是,为了知道结果的数量,您需要在第一个活动中进行查询(并获取光标)。 如果您得到多个结果,您需要将数据( 传递光标? )发送到列表活动。 在列表活动中再次执行查询可能不对,对吧?

我知道您可以通过使用内容提供商来共享游标,但由于活动来自同一个应用程序且数据是私有的(外部没用),因此不要让其他任何人都可以使用它。

我在这里读到你可以创建一个可分割的光标并将其发送到捆绑包中,但我不确定这是否是正确的用法。

有关如何解决这个问题的任何想法?

提前致谢。

选项#1:搜索活动执行的查询只是SELECT _ID FROM ...在“none”情况下,它显示消息。 在“one”情况下,它将匹配的_ID传递给detail活动,以通过查询获取该行的所有所需列来查看匹配。 在“很多”情况下,它将搜索项传递给列表活动,列表活动运行完整查询(包括显示列表所需的所有列)。

选项#2:将搜索活动和列表活动合并为一个活动。 基本上,将“搜索并选择要查看的项目”视为“UI事务”,并在一个活动中完成所有操作。 搜索活动会做足够填充在“多”的情况下列表中查询,显示在列表AlertDialog或通过主要活动本身ViewFlipper什么的。 在“无”情况下,它显示消息。 在“一”情况下 - 或者当用户点击列表中的条目时 - 它将内容传递给详细活动以查看该项目。

选项#3:将搜索查询移动到列表活动 - 您的搜索活动通过extras将搜索信息传递给列表活动,extras执行onCreate()中的rawQuery() onCreate() 列表活动处理“无”和“很多”情况。 在“one”情况下,它只调用detail活动的startActivity()finish()因此当用户按下BACK时,控制将返回搜索活动。

在其他条件相同的情况下,我可能选择#2选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM