跨多个Activity回传数据

使用INTENT_FLAG_FORWARD_RESULT标志。

这个标志有一个特殊的作用,就是能够跨Activity传递Result。比如A1→A2,此时如果从A2中启动A3,并且设置的启动标志为FORWARD_RESULT,那么A3运行时,可以在A3中调用setResult,然后finish(),其结果会从A3直接返回到A1,并且A1会得到A3所set的result。要满足这种调用,必须使用以下方式启动。

A1(startActivityForResult) →A2(StartActivity) →A3。注意A2不能使用forResult的方式启动A3,否则会发生冲突START_FORWARD_AND_REQUEST_CONFLICT。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中,如果一个 Activity 要向另一个 Activity 返回数据,则可以使用 startActivityForResult 方法启动另一个 Activity。然后在另一个 Activity 中设置 setResult 方法并 finish() 结束该 Activity。 在第一个 Activity 中,可以通过 onActivityResult 方法获取返回的数据。在此方法中,您可以检查请求代码(requestCode)以确定哪个 Activity 返回数据,并检查结果代码(resultCode)以确定操作是否成功。然后,您可以使用获取的数据执行任何必要的操作。 如果您有多个 Activity 需要返回数据,则可以使用不同的请求代码来标识每个 Activity,以便在 onActivityResult 方法中分别处理每个 Activity 的返回数据。 以下是一个示例: 在第一个 Activity 中启动另一个 Activity: ```java Intent intent = new Intent(this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE_SECOND_ACTIVITY); ``` 在第二个 Activity 中设置返回数据并结束 Activity: ```java Intent intent = new Intent(); intent.putExtra("data", "Hello from SecondActivity"); setResult(Activity.RESULT_OK, intent); finish(); ``` 在第一个 Activity 中实现 onActivityResult 方法以处理返回的数据: ```java @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_SECOND_ACTIVITY && resultCode == Activity.RESULT_OK) { String returnedData = data.getStringExtra("data"); Toast.makeText(this, returnedData, Toast.LENGTH_SHORT).show(); } } ``` 在此示例中,使用 REQUEST_CODE_SECOND_ACTIVITY 标识了第二个 Activity。在 onActivityResult 方法中,检查 requestCode 是否等于 REQUEST_CODE_SECOND_ACTIVITY 并检查 resultCode 是否等于 Activity.RESULT_OK(表示操作成功)。然后,使用 data 参数获取返回的数据,并执行必要的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值