Android Intent startActivityForResult的练习

本文介绍了如何在Android应用中使用onActivityResult方法实现在主界面与子界面之间的数据交互。通过传递requestCode和返回数据,实现了主界面与子界面的高效通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景示例:

主Activity,有着很多子界面功能模块,首先从主界面传递某个数据去到子界面,子界面关闭的时候需要把某个返回数据返回到主界面。

这样的情况下数据交互,就可以用到onActivityResult.

功能参数:

1. startActivityForResult(Intent intent, int requestCode);

    intent 参数: 一个intent对象。

    requestCode参数: 一个标识码,用来给你要传递的子Activity做为标识,当子Activity结果时requestCode将返回到onActivityResult()中。以方便确定是从哪个子Activity中返回过来的。

2. onActivityResult(int requestCode , int resultCode ,Intent data);

    requestCode参数:这个整数返回给主onActivity作为标识,确认返回的数据是从哪个子activity中返回的。

    resultCode参数:这个是由子Activity通过setResult()方法返回。主Activity根据此来判断是否由子Activity返回。

    data参数:一个intent.

3. setResult(int resultCode, intent data)

    resultCode参数:当Activity结束时,resultCode将传递到主Activity的onActivityResult()中。

    data参数:intent对象,返回给主Activity的数据。

 

示例代码:

主Activity。

private final int REQUESTCODE = 1;  //定义一个常量用来做为requestCode

传递:

Intent intent = new Intent().setClass(MainActivity.this,Other.class);
                int a = Integer.parseInt(one.getText().toString());
                int b = Integer.parseInt(two.getText().toString());
                
                /*new一个Bundle对象,并将要传递的数据传入*/ 
                Bundle bundle = new Bundle();  
                bundle.putInt("one",a);  
                bundle.putInt("two",b);  
                
                /*将Bundle对象传递给Intent*/ 
                intent.putExtras(bundle);  
               // startActivity(intent);
                startActivityForResult(intent, REQUESTCODE);
View Code

onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (resultCode) { 
            case RESULT_OK:        
                int three2 = data.getIntExtra("three", 0);
                result_ok.setText(String.valueOf(three2));
                break;
            default:
                break;
        }
    }
View Code

子Activity,Other

Intent it = new Intent();
            int three = Integer.parseInt(result.getText().toString());
             
            it.putExtra("three", three);  
            setResult(RESULT_OK, it);             
            finish();
View Code

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/liucancan/p/3169349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值