假设我的堆栈上有三个活动,例如A→B→C 我想终止B并用活动D替换它,这样堆栈看起来像这样:A→D→C 预期的效果是具有“屏幕选择器”活动C.它在活动B之上打开,提供许多可供选择的东西,当用户点击一个时,它关闭,显示所选择的屏幕。我可以使用overridePendingTransition取消打开动画,但仅凭这一点无法通过关闭选择器界面来帮助我揭示活动。
Android中有没有办法做到这一点?
答案 0 :(得分:2)
您可以使用FLAG_ACTIVITY_NO_HISTORY标志启动B.因此它不会进入堆栈,C将决定启动D或B.它是否适合您的需求?
答案 1 :(得分:1)
另一个idia))B和D是相同的活动(!),其具有B模式和具有不同布局的D模式。当它处于B模式时,它使用StartActivityForResult()启动C.返回时,它决定要膨胀的布局。很简单吧?
答案 2 :(得分:1)
我有两次真正的冬天开始。第一个不完美但很容易实现;第二个应该给出预期的结果,但更难实施。
一种是使用FLAG_ACTIVITY_REORDER_TO_FRONT和FLAG_ACTIVITY_PREVIOUS_IS_TOP开始活动。这将为任何现有活动提供预期的行为。如果活动不在堆栈的后面,特别是在它的第一次启动时,它仍然不起作用。
另一种可能性 - 我还没有实现 - 是创建一个非常像TabHost的ActivityManager并将意图传递给这个人。然后它负责在其onNewIntent()方法中加载下一个活动。这应该有效,并允许单独开展单独的活动。