如何启动并传递数据到第二个Activity,并且可以将第二个Activity的数据再返回到主Activity中?
时间: 2023-05-29 09:02:24 浏览: 106
Android中两个Activity之间数据传递及返回问题
启动第二个Activity并传递数据:
1.在主Activity中,使用Intent对象创建启动第二个Activity的意图。
2.使用Intent的putExtra方法,将需要传递的数据添加到Intent对象中。
3.调用startActivity方法启动第二个Activity,并传递Intent对象。
在第二个Activity中获取数据:
1.使用getIntent方法获取传递过来的Intent对象。
2.使用Intent的getStringExtra等方法获取传递过来的数据。
将第二个Activity的数据返回到主Activity:
1.在第二个Activity中,使用Intent对象创建包含需要返回的数据的意图。
2.使用Intent的putExtra方法,将需要返回的数据添加到Intent对象中。
3.调用setResult方法,将包含返回数据的Intent对象传递回主Activity。
在主Activity中处理返回的数据:
1.在主Activity中,使用onActivityResult方法获取返回的Intent对象。
2.使用Intent的getStringExtra等方法获取返回的数据。
以下是示例代码:
// 主Activity
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建启动第二个Activity的意图
Intent intent = new Intent(this, SecondActivity.class);
// 添加需要传递的数据到Intent对象中
intent.putExtra("data", "Hello, SecondActivity!");
// 启动第二个Activity,并传递Intent对象
startActivityForResult(intent, REQUEST_CODE);
}
// 处理从第二个Activity返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
// 获取返回的Intent对象
Intent intent = data;
// 获取返回的数据
String result = intent.getStringExtra("result");
// 处理返回的数据
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}
}
}
// 第二个Activity
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
// 获取传递过来的Intent对象
Intent intent = getIntent();
// 获取传递过来的数据
String data = intent.getStringExtra("data");
// 处理传递过来的数据
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
// 创建包含返回数据的Intent对象
Intent returnIntent = new Intent();
// 添加需要返回的数据到Intent对象中
returnIntent.putExtra("result", "Hello, MainActivity!");
// 将包含返回数据的Intent对象传递回主Activity
setResult(RESULT_OK, returnIntent);
finish(); // 结束当前Activity
}
}
阅读全文