管理屏幕流程

时间:2011-07-27 08:01:15

标签: android

为了保持简单,我有3个屏幕。 A,B和C. 您可以从屏幕A访问屏幕B或C. 您可以从屏幕B访问屏幕C. 您可以从屏幕C

访问屏幕B.

屏幕A的数据传递给B和C

我要做的是在屏幕B和C上创建一个按钮,然后将它们带回屏幕A.我不想开始A的新活动,因为它需要创建的数据

还有一种方法可以否决手机上的后退按钮。即如果在屏幕C上它返回到A甚至是用户点击B然后C?

感谢您的时间

3 个答案:

答案 0 :(得分:0)

建议使用结果和startActivityForResult()

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

Intent result = new Intent();
result.putExtra("gotoA", true);
setResult(RESULT_OK, result);
finish();

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

答案 1 :(得分:0)

您可以通过重新实施onBackPressed

来覆盖后退按钮
public void onBackPressed() {
    super.onBackPressed();

    // Close B
    // Close C
}

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

答案 2 :(得分:-1)

是的,你可以覆盖后退按钮的功能(虽然这不是一个好习惯)。您需要覆盖ActivityC和此方法中的onBackPressed()方法

    Intent homeIntent=new Intent(this,ActivityA.class);
    homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(homeIntent);

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