Activity之间通信、跳转(Intent)
1.不带数据跳转
Intent intent = new Intent() ;
// Intent intent = new Intent(MainActivity.this,SecondActivity.class) ;
intent.setClass(MainActivity.this,SecondActivity.class) ;
startActivity(intent);
2.带数据或多个数据
2.1跳转
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
//容器
Bundle bundle = new Bundle() ;
//往 Bundle 容器里面添加数据
bundle.putInt("number",123456789);
bundle.putString("string","Hello World");
//绑定 intent
intent.putExtras(bundle) ;
startActivity(intent);
2.2接收
//获取 Intent
Intent intent = getIntent();
//获取 Bundle 容器
Bundle bundle = intent.getExtras() ;
//从 Bundle 容器中取出数据
String s = bundle.getString("string") ;
int i = bundle.getInt("number") ;
3带数据跳转,带数据返回
3.1带数据跳转
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
//容器
Bundle bundle = new Bundle() ;
//往 Bundle 容器里面添加数据
bundle.putString("string","Hello World");
//绑定 intent
intent.putExtras(bundle) ;
startActivityForResult(intent,101);
同时要实现 onActivityResult 方法来接收处理返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//根据 requestCode 和 resultCode 来判断是否是对应的 Activity 跳转、返回的数据,进行处理。
if (requestCode == 101 && resultCode == 202){
String s = data.getStringExtra("back") ;
Log.e("s=====",s) ;
}else {
Log.e("返回的数据:","不见了???");
}
}
3.2接收处理数据,并带上数据返回(到3.1 onActivityResult方法中处理返回的数据)
//获取 Intent
Intent intent = getIntent();
//获取 Bundle 容器
Bundle bundle = intent.getExtras() ;
//从 Bundle 容器中取出数据
String s = bundle.getString("string") ;
//处理数据
Log.e("string : ",s) ;
// intent 添加数据,并返回
intent.putExtra("back","返回的数据");
setResult(202,intent);