TaskStackBuilder 到底出了什么问题,它在开始新活动时使用了这种丑陋的转换:
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(this)
.addParentStack(ActivityB.class)
.addNextIntent(new Intent(this, ActivityB.class));
taskStackBuilder.startActivities();
这基本上是谷歌搜索的标准代码,但是如果您运行此代码,您将在转到 ActivityB 时看到超级丑陋的转换。
我想这是因为它是一个新任务。但我不想让它看起来像这样,我能做些什么吗?
谢谢 !
深入挖掘后TaskStackBuilder
的实现,问题是它强制添加Intent.FLAG_ACTIVITY_CLEAR_TASK
到堆栈中的第一个意图,这会导致丑陋的转换,因此使用以下命令来启动堆栈:
Intent[] intents = TaskStackBuilder.create(this)
.addParentStack(ActivityB.class)
.addNextIntent(new Intent(this, ActivityB.class))
.getIntents();
if (intents.length > 0) {
intents[0].setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// Or any other flags you want, but not the `.._CLEAR_..` one
}
// `this` inside current activity, or you can use App's context
this.startActivities(intents, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
这里的想法是仍然使用TaskStackBuilder
用于创建您的意图堆栈,然后删除奇怪的Intent.FLAG_ACTIVITY_CLEAR_TASK
认为TaskStackBuilder
添加到第一个意图,然后使用您想要的任何上下文手动启动活动。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)