假設有倆個佈局界面,第一個是要獲取信息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