假设有俩个布局界面,第一个是要获取信息Info的定义为MainActivity,第二个是提供须要的信息的定义为SecondActivity,信息格式定义为Infojava
(1)用startActivity(Intent intent)函数启动ide
用这种方式启动,需把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区分。this
(2)用startActivityForResult(int requestCode,int resultCode,Intent intent)函数启动code
用这种方式启动,需把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启动后,用下面的代码获取信息返回给MainActivityget
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是怎么传递和识别的?it