Android Intent简单的数据传递

简单的数据传递

实现在activity1中启动activity2,并传递数据到activity2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//activity1 发送数据:
public void onClick(View v) {
String data = "我是FirstActivity传递过去的数据";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
//使用putExtra()方法来传递数据,形式为常见的 key-value 形式
intent.putExtra("extra_data", data);
startActivity(intent);
}

//activity2 取出数据:
public void onClick(View v) {
Intent intent = getIntent(); //getIntent()方法获取到用于启动activity2的Intent
String Data = intent.getStringExtra("extra_data"); //getStringExtra()方法获取传过来的字符串内容
Toast.makeText(SecondActivity.this, Data, Toast.LENGTH_SHORT).show();
}
返回数据给上一个活动

实现从activity1跳转到activity2,再返activity1,同时activity2向activity1返回数据,返回后activity1接收

activity2结束后返回activity1,会回调activity1的onActivityResult方法,因此需要在activity1中复写这个方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//activity1:
binding.btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent,1); //接收2个参数 第二个为resquestCode 用于区分不同的activity来源
}
});

//activity1 中复写 onActivityResult,接收三个参数 requestCode(对应activity1中startActivityForResult(intent,1)第二个参数), resultCode(对应activity2中的setResult(RESULT_OK,intent)的第一个参数), intent
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) { //根据requestCode来区分是哪一个activity返回来的数据
case 1:
if (resultCode == RESULT_OK) {
String str = data.getStringExtra("key");
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
break;
}
}

//activity2:
secondBinding.btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("key","我是页面2返回的数据");
setResult(RESULT_OK,intent);
finish();
}
});
  • requestCode: 请求码,对应你在startActivityForResult(Intent intent, int requestCode)中传入requestCode,该参数的作用是让你在有多个activity返回结果时,能判断是哪一个activity返回。
  • setResult()方法向上一个活动返回数据,第一个参数为resultCode,第二个为Intent
  • resultCode一般取RESULT_OK(-1)或RESULT_CANCELED(0)
修改通过按back返回键并回传数据

在activity2中复写onBackPressed()方法

1
2
3
4
5
6
7
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data_return", "通过按键返回SecondActivity的数据");
setResult(RESULT_OK, intent);
finish();
}
0%