首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理屏幕流

管理屏幕流
EN

Stack Overflow用户
提问于 2011-07-27 16:01:15
回答 3查看 875关注 0票数 0

为了简单起见,我有3个屏幕。A、B和C。您可以从屏幕A访问屏幕B或C。您可以从屏幕B访问屏幕C。您可以从屏幕C访问屏幕B

来自屏幕A的数据被传递到B和C

我要做的是在屏幕B和C上创建一个按钮,无论它们位于何处,都会将其带回屏幕A。我不想启动A的新活动,因为它需要它创建的数据

此外,还有一种方法可以否决电话上的后退按钮的功能。也就是说,如果在屏幕C上返回到A,那么用户是否点击了B,然后点击了C?

耽误您时间,实在对不起

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-27 16:19:50

一个建议是使用results和startActivityForResult()

如果你从B到C,点击按钮转到A,你可以设置结果意图;

代码语言:javascript
复制
Intent result = new Intent();
result.putExtra("gotoA", true);
setResult(RESULT_OK, result);
finish();

然后通过覆盖onActivityResult()并额外检查意图来捕获B中的结果,然后完成B。

票数 0
EN

Stack Overflow用户

发布于 2011-07-27 16:26:03

您可以通过重新实现onBackPressed来覆盖back按钮

代码语言:javascript
复制
public void onBackPressed() {
    super.onBackPressed();

    // Close B
    // Close C
}

为了将数据从一个活动传递到另一个活动,您可以使用Intent.putExtra() (从A发送到B,C),并使用onActivityResult() + setResult()将数据传递回A。

票数 0
EN

Stack Overflow用户

发布于 2011-07-27 16:25:48

是的,您可以重写back按钮所做的事情(但这不是一个好的做法)。您需要在ActivityC中和此方法内部重写onBackPressed()方法

代码语言:javascript
复制
    Intent homeIntent=new Intent(this,ActivityA.class);
    homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(homeIntent);

编辑:查看FLAG_ACTIVITY_CLEAR_TOP的文档,它会在你的活动不存在的时候创建它,并清除它上面的所有活动。您还可以为ActivityA传递有关此意图的数据。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6841176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档