当前位置: 首页 > article >正文

android studio Activity发送数据

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();

    }
});


http://www.kler.cn/a/14281.html

相关文章:

  • 零基础抽象轻松MYSQL
  • nn.Linear(),全连接层:将输入值做线性变换
  • ES6 箭头函数的this使用
  • ROS学习第三十五节——URDF集成Gazebo实操
  • CKA证书题库-总结
  • 子元素选择器
  • 计及需求响应的粒子群算法求解风能、光伏、柴油机、储能容量优化配置(Matlab代码实现)
  • CSS3 grid网格布局
  • Listener 监听器介绍以及代码演示
  • Nuxt3从零到发布
  • lunix lab5:深入理解进程切换
  • 代码随想录训练营day53|1143、最长公共子序列;1035、不相交的线;53、最大子序和动态规划
  • 【世界读书日】2023年通信好书推荐
  • 这绝对是csdn写的最全面最详细的jmeter常用10大组件以及组件的执行顺序和作用域,附带视频教程。
  • git rebase
  • 自动修改文章的软件-自动修改文案原创软件
  • day33—编程题
  • 分布式ID解决方案对比
  • 多源迁移学习网络补充知识用于具有不可见故障的机器智能诊断
  • 程序员工作好吗?