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