java– 活动堆栈问题

java– 活动堆栈问题,第1张

概述我有两组活动假设每组3个活动,(A1,B1,C1||A2,B2,C2)我从A1开始我的应用程序然后–>B1–>C1这里我想从C1跳到–>A2和A2,如果我按回它应该存在应用程序而不是让我回到C1,然后从A2我导航到–>B2–>C2.所以基本上我想改变起始活动,就像我在一个应用程序中有两个应

我有两组活动假设每组3个活动,(A1,B1,C1 || A2,B2,C2)我从A1开始我的应用程序然后 – > B1 – > C1这里我想从C1跳到 – > A2和A2,如果我按回它应该存在应用程序而不是让我回到C1,然后从A2我导航到 – > B2 – > C2.

所以基本上我想改变起始活动,就像我在一个应用程序中有两个应用程序,当我转到第二个应用程序时,我必须清除活动堆栈.那可能吗?有任何想法吗?

解决方法:

在我看来,你已经回答了自己的问题.你写了:

So it is basically I want to change the starting Activity, it is like
I have two Apps in one App and when I flip to the second App I have to
clear the Activity Stack.

我会这样做:

创建dispatcherActivity,它是在启动应用程序时启动的活动.此活动是您的任务的根活动,负责启动A1或A2,取决于…而不是自己调用finish()(即:它将被A1或A2覆盖,但仍然位于活动的根部堆).

在A1中,捕获“后退”键并告诉dispatcherActivity退出如下:

@OverrIDepublic voID onBackpressed() {    Intent intent = new Intent(this, dispatcherActivity.class);    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_top);    intent.addExtra("exit", "true");    startActivity(intent);}

这将清除任务堆栈到根活动(dispatcherActivity),然后再次使用此意图启动dispatcherActivity.

在C1中,要启动A2,请执行以下 *** 作:

Intent intent = new Intent(this, dispatcherActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_top);intent.addExtra("A2", "true");startActivity(intent);

这将清除任务堆栈到根活动(dispatcherActivity),然后再次使用此意图启动dispatcherActivity.

在dispatcherActivity中,在onCreate()中,您需要根据intent中的extras确定要执行的 *** 作,如下所示:

Intent intent = getIntent();if (intent.hasExtra("exit")) {    // User wants to exit    finish();} else if (intent.hasExtra("A2")) {    // User wants to launch A2    Intent a2Intent = new Intent(this, A2.class);    startActivity(a2Intent);} else {    // Default behavIoUr is to launch A1    Intent a1Intent = new Intent(this, A1.class);    startActivity(a1Intent);}

在A2中,捕获“后退”键并告诉dispatcherActivity使用与A1中相同的onBackpressed()覆盖来退出.

注意:我只是输入了这段代码,所以我没有编译它,它可能不完美.你的旅费可能会改变 总结

以上是内存溢出为你收集整理的java – 活动堆栈问题全部内容,希望文章能够帮你解决java – 活动堆栈问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1116929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存