我有一个在清单中用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

08-26 09:57