我有一个 Activity,通常希望存在于多个任务中,以便 [后退] 按钮恢复之前的状态;不过,我也想用一个搜索视图与现有的活动,而不将新的活动推入任务堆栈(因为我想搜索当前显示的内容)。这是我的问题:
- 如果我将 Activity 的启动模式设置为“singleTop”,SearchView 将与当前 Activity 一起使用,但是Context.startActivity不向堆栈添加新活动。
- 如果我将活动的启动模式设置为“标准”,启动活动将新活动添加到堆栈中,但 SearchView 还会创建一个新(空)活动,而不是搜索现有活动。
我找不到任何方法让 SearchView 使用意图标志(例如FLAG_ACTIVITY_SINGLE_TOP。我尝试采取相反的方式,将启动模式设置为“singleTop”,然后添加FLAG_ACTIVITY_NEW_TASK符合每一个意图,但这仅在从不同的活动类别启动时才有效;当我尝试从自己的类启动活动的新实例时,Android 不尊重 FLAG_ACTIVITY_NEW_TASK 并且没有将新任务推送到堆栈上。
也许我可以做点什么Activity.onNewIntent然后强制活动克隆自身。
我正处于放弃 SearchView 并只是编写自己的自定义小部件的边缘,尽管事实是“从 Android 3.0 开始,使用 SearchView 小部件作为操作栏中的项目是在应用程序中提供搜索的首选方式” (Source)——到目前为止,它似乎太不灵活且不可配置,无法在重要的情况下使用。
有没有人找到解决这个问题的方法?
经过大量的反思和错误的开始,我意识到 SearchView 根本不适合这项任务。 Google 在设计 SearchView 时考虑到了一种非常具体的搜索活动类型:
- 用户输入搜索查询。
- 该应用程序推送一个显示结果列表的新活动。
这不是我使用的搜索模型;相反,我想使用查询来优化当前显示在屏幕上的列表 - 它更像是过滤搜索,而不是同步查询和响应模型。 SearchView 不是为此设计的,因此我继续编写自己的小部件(并将其绑定到搜索菜单项和搜索按钮)。
我很惊讶没有人对这个问题发表任何评论——通常 Android 问题会引起很多讨论。我想这实在是太遥远了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)