Android活动调用和返回结果

3
我有3个活动A,B和C。
流程是:
活动A调用B,B调用C。(A-> B-> C)
现在我在活动C中,想要将一些结果返回给活动A,而不涉及B。
情况是:只能通过活动A调用活动B(如果用户从C按下返回按钮,则不会调用B,并且活动A将出现在前面)。
请问如何处理这种情况?
更新:
我正在从活动A调用活动B。
Intent intent = new Intent(this, B.class);
            startActivityForResult(intent, 0);

同样地,我正在从B中调用C。

在A类中,我正在重写onActivityResult方法。

4个回答

2
  • 从ActivityA启动ActivityB作为StartActivityForResult
  • 在ActivityB的onCreate()方法中,作为StartActivityForResult启动ActivityC。不要结束ActivityB
  • 在ActivityC中完成工作后,设置结果
  • 在ActivityB中,在OnActivityResult()中获取结果后,将结果设置为ActivityA并结束ActivityB。
  • 从ActivityC中重写onBackPressed(),将结果设置为null并结束ActivityC。

1
在Activity B中调用C之后调用startActivity方法后请调用finish()方法。

但是如何将结果返回给活动A。 - Connecting life with Android

1
我认为你需要通过startActivityForResult()从B调用C,然后在Activity B中重写onActivityResult()并添加finish();同时,从Activity A通过startActivityForResult()启动Activity B,这将直接返回到Activity A而不会重新创建它。

1

这是在 C 活动中简单的方法

Intent i=new Intent(getApplicationContext(), A.class);
i.putExtra("id", id);
startActivity();

在返回按钮事件中

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
       Intent i=new Intent(getApplicationContext(), A.class);
       i.putExtra("id", id);
       startActivity();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接