Android:活动A – > C,但C – > B – > A通过后退按钮,怎么做?

我有三个活动:A,B,C.
活动A可以从B或C开始.
当A开始C时,我可以返回A,只需按下后退按钮.但是我希望“返回”到B然后再回到A(再次按下后退按钮).

我尝试以这种方式使用TaskBackStack:

final TaskStackBuilder builder = TaskStackBuilder.create(this)
    .addParentStack(this)
    .addNextIntent(new Intent(this, B.class))
    .addNextIntent(new Intent(this, C.class));
builder.startActivities();

但它不起作用……任何人都可以帮助我吗?

对不起我的英文,并提前感谢

解决方法:

在尝试回答您的问题之前,我对您在活动之间导航的方法有一些评论.一般来说,这种方法不是一个好主意,因为这样做,你不会遵循Android导航模式,这可能会使你的应用程序不是用户友好的,因为大多数Android应用程序使用导航模式.

Android导航模式says

Temporal navigation, or navigation between historical screens, is deeply rooted in the Android system. All Android users expect the Back button to take them to the prevIoUs screen, regardless of other state. The set of historical screens is always rooted at the user’s Launcher application (the phone’s “home” screen). That is, pressing Back enough times should land you back at the Launcher, after which the Back button will do nothing.

但是,使用Android模式在应用程序中导航还有另一种可能性,但我认为这不是解决您问题的方法.你可以看看Up Navigation

最后,我有一个关于使用覆盖OnBackpressed()来启动新活动的解决方案的相关评论.你应该真的避免这种情况,因为使用它,你可以让你的年代导航变得疯狂.因为当你在OnBackpressed中创建一个活动时,你总是在Android Stack上放置一个新活动,所以这里有两个问题:

>堆栈可以根据用户行为快速增长
>可以很难摆脱你的applcaiton(可能很难让你的堆栈变空)

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...