android – 根据指南处理“向上”导航的正确方法

前端之家收集整理的这篇文章主要介绍了android – 根据指南处理“向上”导航的正确方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我完全赞同下面的导航

想象一下,Book详细信息是在BookDetailActivity的不同实例中创建的.

在book2详细信息中按下之前的堆栈是:

> BookDetailActivity(第2册 – 你在这里)@H_404_7@> BookDetailActivity(第1册)@H_404_7@> AllBooksActivity

如果我按照guidelines我将使用:

Intent parentActivityIntent = new Intent(this,AllBooksActivity.class);
        parentActivityIntent.addFlags(
                Intent.FLAG_ACTIVITY_CLEAR_TOP |
                Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(parentActivityIntent);
        finish();

但是这个代码的大问题是BookDetailActivity(第1册)还活着!

在“向上”之后按下后退按钮将带来第1册的细节.

如何杀死原始AllBooksActivity和我按下的活动之间的所有BookDetailActivity?

解决方法

related guidelines article注意到以下内容

Implementation Note: As a best practice,when implementing either Home@H_404_7@ or Up,make sure to clear the back stack of any descendent screens.@H_404_7@ For Home,the only remaining screen on the back stack should be the@H_404_7@ home screen. For Up navigation,the current screen should be removed@H_404_7@ from the back stack,unless Back navigates across screen hierarchies.@H_404_7@ You can use the FLAG_ACTIVITY_CLEAR_TOP and FLAG_ACTIVITY_NEW_TASK@H_404_7@ intent flags together to achieve this.

由于你正在这样做,BookDetailActivity1应该在FLAG_ACTIVITY_CLEAR_TOP之前关闭.如果它可以存活并且按下Back后显示的唯一方法是它是否在AllBooksActivity之前启动.

至于不需要FLAG_ACTIVITY_NEW_TASK(由android开发人员的答案建议):

When using this flag,if a task is already running for the activity@H_404_7@ you are now starting,then a new activity will not be started;@H_404_7@ instead,the current task will simply be brought to the front of the@H_404_7@ screen with the state it was last in.

…所以如果您的活动存在,它将无法启动新任务.

猜你在找的Android相关文章