我有一个在清单中用SearchActivity
定义的android:launchMode="singleTop"
。
mySearchActivity
包含一个SearchView
供用户输入查询,一个ViewPager
显示搜索结果。
我为SearchActivity
选择了single top,因此用户可以在活动中进行大量搜索,然后只需按一下back按钮即可返回主屏幕。
不过,我刚刚在“活动”中引入了一个“智能搜索”按钮,当按下该按钮时,将触发自动高级搜索,结果仍显示在aSearchActivity
中。
不过,我的要求是,我需要这些高级搜索结果显示在堆栈上的一个新活动中—即,当用户按下后退键时,它们将被带到上一个(标准)结果屏幕,然后必须再次按下后退键才能返回主屏幕。
我读过this about launch modes和这个about tasks and back stack,并尝试用这样的意图启动“高级”SearchActivity
。
smartSearchIntent.putExtra(SearchResultsActivity.QUERY_EXTRA_KEYS, selectionArgs);
smartSearchIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
…我还尝试使用
Intent.FLAG_ACTIVITY_NEW_TASK
作为参数,但当我在高级搜索结果屏幕上按后退键时,它会直接跳回到主屏幕。一直以来,我都在这个活动的清单中定义了
android:launchMode="singleTop"
,因为这是“正常”的行为-所以是否可以覆盖这个,如果是,如何覆盖?还是有更好的解决方案?
最佳答案
我想出了解决办法。刚刚把我对有相关问题的人的答案贴在这里-https://stackoverflow.com/a/27125107/1617737。