8.如何启动并传递数据到第二个Activity,并且可以将第二个Activity的数据再返回到主Activity中?
时间: 2023-05-29 22:02:28 浏览: 106
Android中两个Activity之间数据传递及返回问题
启动第二个 Activity 并传递数据的步骤如下:
1. 在主 Activity 中创建一个 Intent 对象,并使用 putExtra() 方法将需要传递的数据放入 Intent 中。
```java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("key", value);
startActivity(intent);
```
其中,"key" 为传递数据的键,value 则为需要传递的数据。
2. 在第二个 Activity 中使用 getIntent() 方法获取传递过来的数据,并根据需要进行操作。
```java
Intent intent = getIntent();
data = intent.getStringExtra("key");
```
其中,getStringExtra("key") 方法中的 "key" 必须与主 Activity 中 putExtra() 方法中的键相同。获取到数据后,就可以进行相应的操作。
将第二个 Activity 的数据返回到主 Activity 中,需要使用 startActivityForResult() 方法启动第二个 Activity,如下所示:
```java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
```
其中,第二个参数 1 是请求码,用于在 onActivityResult() 方法中进行判断。
然后,在第二个 Activity 中,当需要返回数据时,使用 setResult() 方法设置返回值,并关闭当前 Activity。
```java
Intent intent = new Intent();
intent.putExtra("result", data);
setResult(RESULT_OK, intent);
finish();
```
最后,在主 Activity 中重写 onActivityResult() 方法获取返回的数据。
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
String result = data.getStringExtra("result");
// 处理返回的数据
}
}
```
其中,requestCode 为请求码,在启动时设置的值。resultCode 为返回码,表示操作是否成功。data 为返回的 Intent 对象,通过该对象可以获取到返回的数据。
阅读全文