假设有俩个布局界面,第一个是要获取信息Info的定义为MainActivity,第二个是提供需要的信息的定义为SecondActivity,信息格式定义为Info
(1)用startActivity(Intent intent)函数启动
用这种方式启动,需把SecondActivity设置为程序的入口布局界面,输入信息后用下面代码把信息传递到MainActivity,然后SecondActivity关闭;
Info info =new Info(name.getText().toString(),age.getText().toString());
String key1 = new String("info");
String key2 = new String("people");
Bundle data = new Bundle();
data.putSerializable(key2, info);
data.putSerializable(key1, info);
Intent intent = new Intent(SecondActivity.this,MainActivity.class);
intent.putExtras(data);
startActivity(intent);finish();
MainActivity启动后,用下面的代码获取信息并显示
Intent intent = getIntent();
Bundle data = intent.getExtras();
Info info =(Info)data.getSerializable("people");
name.setText(info.getName());
age.setText(info.getAge());
需要指明是,Info必须实现Serializable接口才可以序列化,Info不需要实现任何Serializable接口方法,只需要声明实现接口,就可以进行序列化;data.putSerializable可以把多个序列化的元素插入到data中,他们用key区分。
(2)用startActivityForResult(int requestCode,int resultCode,Intent intent)函数启动
用这种方式启动,需把MainActivity设置为程序的入口布局界面,需要时(如按钮)用下面代码启动SecondActivity,SecondActivity在关闭时返回数据:
commit.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,0);
}
});
SecondActivity启动后,用下面的代码获取信息返回给MainActivity
Info info =new Info(name.getText().toString(),age.getText().toString());
String key = new String("info");
Bundle data = new Bundle();
data.putSerializable(key, info);
Intent intent = getIntent();//Intent intentx = new Intent();也可以
intent.putExtras(data);
SecondActivity.this.setResult(0, intent);
SecondActivity.this.finish();
这里留一个疑问,两个布局之间的requestCode是怎么传递和识别的?