android之Intent機制詳解

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()方法
相關文章
相關標籤/搜索