Intent是一種運行時綁定(run-time binding)機制,它能在程序運行過程當中鏈接兩個不一樣的組件。如實現兩個activity之間的鏈接很數據通信
html
Intent it = new Intent(Activity1.this, Activity2.class); Bundle bundle=new Bundle(); bundle.putString("name", "zhangsan"); it.putExtras(bundle); // 同it.putExtra("name", "zhangsan");putExtra添加附件信息 startActivity(it); 對於數據的獲取能夠採用: Bundle bundle=getIntent().getExtras(); String name=bundle.getString("name");
startActivity僅僅是兩個activity之間的單向數據交互,若想實現雙向交互時能夠使用startActivityForResultide
startActivityForResult的原型中相關函數函數
startActivityForResult(Intent intent, Int requestCode) setResut(int resultCode, Intent intent) onActivityResult(int requestCode, int resultCode, Intent intent)
簡單來講,startActivityForResult能夠一次性完成這樣一項任務:當程序執行到這段代碼的時候,從Activity1跳轉到下一個Activity2,而當這個Activity2調用了finish()方法之後(finish方法用於結束當前的activity,返回到上一個activity。),程序會自動跳轉回Activity1,並調用前一個Activity1中的onActivityResult( )方法。this
@Override protected void onCreate(Bundle arg0) {在Activity2中回傳數據時採用setResult方法,而且以後要調用finish方法。 // TODO Auto-generated method stub super.onCreate(arg0); setContentView(R.layout.activity_welcome); Intent it = new Intent(Activity1.this, Activity2.class); Bundle bundle=new Bundle(); bundle.putString("name", "zhangsan"); it.putExtras(bundle); // 同it.putExtra("name", "zhangsan");putExtra添加附件信息 finish(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { //resultCode爲回傳的標記,我在Activity2中回傳的是RESULT_OK case RESULT_OK: Bundle bundle2=data.getExtras(); //data爲Activity2中回傳的Intent String name2=b.getString("name2");//str即爲回傳的值 break; default: break; } }
在Activity2中回傳數據時採用setResult方法,而且以後要調用finish方法。spa
this.setResult(RESULT_OK, intent); //intent爲Activity1傳來的intent finish();//此處必定要調用finish()方法