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