Activity回传数据方法startActivityForResult onActivityResult

有两个Activity,A,B,由A启动B,并传数据给B,B在经过处理后把数据传回给A。举个例子,A是主程序,B是设置参数的Activity,在B修改设置后,要让A重新读取设置,就要用到回传数据.主要是两个函数startActivityForResult onActivityResult
先是A传B:

1
2
3
4
5
6
7
8
    	Bundle bd = new Bundle();
             bd.putString("Dir", "/sdcard/");
    	Intent intent=new Intent();
    	intent.putExtras(bd);
      	intent.setClass(main.this,location.class);
    	startActivityForResult(intent,2);
            //这里的2是我随便写的,代表requestCode,就是用来做个标记,网上的例子好像都是写requestCode,
        //结果我在测试时A没接收到,这里必须填正数

然后就是B接收再传回:

1
2
3
4
Intent it = new Intent(); 
it.putExtra("Dir",(String) tv1.getText());
setResult(2, it);//2与前面的A里的2对应
finish();

A里的接收代码:

1
2
3
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	//B返回时触发
     }

在 Android 中,activity 之间的数据回传可以通过 startActivityForResultonActivityResult 方法来实现。 首先,在调用下一个 activity 之前,需要使用 startActivityForResult 方法启动该 activity。在 startActivityForResult 方法中,可以传递一个 requestCode 参数,该参数用于标识该请求的唯一性。 在新的 activity 中,当需要返回数据给调用该 activityactivity 时,可以使用 setResult 方法设置返回结果,并在 setResult 方法中传递一个 resultCode 参数和一个 Intent 对象。其中,resultCode 参数用于标识返回结果的状态,而 Intent 对象则用于携带返回的数据。 最后,在调用该 activityactivity 中,需要重写 onActivityResult 方法,并在该方法中处理返回的结果。在 onActivityResult 方法中,可以通过 requestCode 和 resultCode 参数来确定返回结果的来源和状态,通过 data 参数来获取返回的数据。 以下是一个示例代码: 在调用 activity 的代码中: ``` Intent intent = new Intent(this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE); ``` 在新的 activity 中: ``` Intent intent = new Intent(); intent.putExtra("data", "Hello, World!"); setResult(RESULT_OK, intent); finish(); ``` 在调用该 activityactivity 中: ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String result = data.getStringExtra("data"); // 处理返回的数据 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值