一、Intent实现页面跳转
在Android系统中,通过Intent的方式进行页面间的跳转是最常见的一种方式。在上一个页面中创建Intent,并且指定需要跳转到的Activity。例如:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
这里的FirstActivity是起点Activity,而SecondActivity是目标Activity。通过这段代码,FirstActivity跳转到了SecondActivity。
在SecondActivity中,可以通过getIntent()方法获取到从FirstActivity传递过来的数据。比如,FirstActivity向SecondActivity传递一个名称为“username”的字符串,可以在SecondActivity中这样实现:
String username = getIntent().getStringExtra("username");
二、Bundle实现跳转并传递数据
在Android应用开发中不仅仅可以通过Intent实现跳转,还可以通过Bundle来实现数据的传递。
在需要传递数据的Activity中,创建Bundle对象并将需要传递的数据放入其中;在需要获取数据的Activity中,通过getExtras()方法获取Bundle对象以及里面存储的数据。例如:
// 第一个Activity传递数据
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", "张三");
bundle.putInt("age", 21);
intent.putExtras(bundle);
startActivity(intent);
// 第二个Activity获取数据
Bundle bundle = getIntent().getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age");
三、使用startActivityForResult实现页面跳转和结果返回
在有些情况下,需要从目标Activity返回结果,比如在拍照或者选择照片的时候。此时就可以使用startActivityForResult来实现页面跳转并且实现回调。比如:
// 发送请求,等待返回数据
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
// 处理返回的数据
@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");
textView.setText(result);
}
}
在目标Activity中,需要在结果处理完之后使用setResult()方法将结果返回给起始Activity。比如:
// 处理数据,将结果返回给发起请求的Activity
Intent intent = new Intent();
intent.putExtra("result", "数据已经处理完毕!");
setResult(RESULT_OK, intent);
finish();