1、将Activity1的数据传递给Activity2 2、Activity2返回数据给Activity1
时间: 2024-10-13 17:11:57 浏览: 8
在Android应用程序中,你可以通过几种方式来传递数据从Activity1到Activity2并获取返回值:
1. **Intent传递**:
- 在Activity1中创建一个Intent,并添加需要传递的数据:
```java
Intent intent = new Intent(Activity1.this, Activity2.class);
Bundle bundle = new Bundle();
bundle.putString("key", "value"); // 数据可以是String、Int等类型
intent.putExtras(bundle);
startActivity(intent);
```
- 在Activity2中接收数据并在合适的地方提取:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
String value = extras.getString("key");
}
}
```
2. **通过Fragment**,如果这两个Activity共享同一个容器(如DrawerLayout),可以在Fragment间传递数据。
3. **使用SharedPreferences**,可以在两个Activity之间存储简单的键值对数据。
4. **通过Activity的结果码**(Result Codes),当Activity2完成操作后,可以启动Activity1并通过`setResult()`和`onActivityResult()`回调方法传递数据。
5. **使用EventBus** 或者 **LiveData / ViewModel** 等架构模式,用于活动间的异步通信。
在Activity2返回数据给Activity1时,通常是在Activity2完成任务后调用`finish()`并设置一个结果码,然后在Activity1中通过`onActivityResult()`处理这个结果:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == YOUR_REQUEST_CODE && resultCode == RESULT_OK) {
Bundle resultBundle = data.getExtras();
String returnedValue = resultBundle.getString("returned_key");
// 处理返回的数据
}
}
```
阅读全文