android studio Activity发送数据

文章详细介绍了在Android应用中如何将数据从一个Activity传送到另一个Activity,包括使用Intent的putExtra方法和Bundle对象。同时,文章也展示了如何通过ActivityResultLauncher进行结果回调,接收上一个Activity返回的数据。

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

1.向下一个activity发送数据

当前activity:
方法1:
//单独可发送一条字符串数据
intent.putExtra("StringMessage","其他数据");

方法2:
//创建一个包裹,发送数据
Bundle bundle =new Bundle();
bundle.putString("StringMessage","其他数据");
bundle.putString("TestMessage","测试数据2");
intent.putExtras(bundle);

下一个activity:

接收端:
方法1:
Intent i=getIntent();
String StringMessage = i.getStringExtra("StringMessage"));

方法2:
Bundle bundle =getIntent().getExtras();
String StringMessage =bundle.getString("StringMessage");
String TestMessage =bundle.getString("TestMessage");

2.向上一个activity发送数据

第一个activity:

//定义一个活动结果启动器
public ActivityResultLauncher<Intent> register;
//1.创建下一个activity的接收回调数据函数
register = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
    @Override
    public void onActivityResult(ActivityResult result) {

        //取出返回数据
        if (result != null) {

            Intent intent = result.getData();

            if (intent != null && result.getResultCode() == Activity.RESULT_OK) {

                Bundle bundle1 = intent.getExtras();
                String ss = bundle1.getString("Test2");
                Log.d("返回数据", "onActivityResult: " + ss);

            }else {
                Log.d("返回数据", "onActivityResult: intent空" );
            }


        }else {
            Log.d("返回数据", "onActivityResult: result空" );
        }

    }
});


//2.发起调用,接收返回数据
Button btn = findViewById(R.id.btn3);
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        Intent intent = new Intent();
        intent.setClass(MainActivity2.this, MainActivity3.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("Test1", "你好!");

        Bundle bundle1 = new Bundle();
        bundle1.putString("Test1", "你好!");
        intent.putExtras(bundle1);

        startActivity(intent);
        //发起调用,接收返回数据,register一定要在startActivity后面才好使。
        register.launch(intent);


    }
});

第二个activity:

//接收上一个activity信息
Bundle bundle =getIntent().getExtras();
String ss =bundle.getString("Test1");
Log.d("接收数据", "onCreate: "+ss);
btn = findViewById(R.id.btn4);
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        
        Intent intent = new Intent();
        Bundle bundle1 = new Bundle();
        bundle1.putString("Test2","你也好!");
        intent.putExtras(bundle1);
        //携带意图向上返回上一个页面(RESULT_OK表示处理成功
        setResult(Activity.RESULT_OK,intent);
        finish();

    }
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值