Activity 之间的数据传输
1. Intent 直接传值
第一个页面传值的方法
Intent intent = new Intent();
intent.putExtra("one", num1);
intent.putExtra("str", str);
intent.setClass(FirstActivity.this, SecondActivity.class);
startActivity(intent);
第二个页面取值的方法
Intent intent = getIntent();
int num = intent.getIntExtra("one", -1);
String string = intent.getStringExtra("str");
2. Intent 传 Bundle, 由 Bundle 来携带
第一个页面传值的方法
Bundle bundle = new Bundle();
bundle.putString("str", str);
bundle.putInt("one", num);
Intent intent = new Intent();
intent.putExtras(bundle);
intent.setClass(FirstActivity.this, SecondActivity.class);
startActivity(intent);
第二个页面取值的方法
Bundle bundle = getIntent().getExtras();
String str = bundle.getString("str");
int num = bundle.getInt("one");
3. 用 startActivityForResult() 来跳转到下一个页面, 在第二个页面 setResult(), 然后 finish() ,第一个页面的 onActivityResult() 接受回调
例如:页面A的局部信息需要修改时,需要跳到页面B来修改
页面A跳转到页面B
写法:
Intent in=new Intent();
in.setClass(Login.this,Regist.class);
startActivityForResult(in, 1);//requestCode(请求编号)这个编号为有那个页面跳转回这个页面的(因为有可能有多个页面跳转到这个页面A)
页面B返回跳转到页面A
写法:
Intent in=new Intent();
in.setClass(Regist.this, Login.class);
in.putExtra("username", username);
in.putExtra("password", password);
setResult(Activity.RESULT_OK, in);
finish();
页面A的回调方法去接收回调的数据
写法:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
String username=data.getStringExtra("username");
String password=data.getStringExtra("password");
usernameEt.setText(username);
passwordEt.setText(password);
break;
default:
break;
}
}