Intent用於啓動Activity, Service, 以及BroadcastReceiver三種組件, 同時還是組件之間通信的重要媒介.
使用Intent啓動組件的優勢
1, Intent爲組件的啓動提供了一致的編程模型. 無論想要啓動的組件是Activity, Service, 還是BroadcastReceiver, 都可以使用Intent封裝啓動的意圖.
2, 在某些時候, 應用程序只是想啓動具有某種特徵的組件, 並不想和某個特定的組件耦合. 使用Intent可以方便的達到這種高層次解耦的目的.
Intent的Component屬性
Intent對象的setComponent(ComponentName comp)方法用於設置Intent的Component屬性. ComponentName包含如下幾個構造器:
ComponentName(String pkg, String cls)
ComponentName(Context pkg, String cls)
ComponentName(Context pkg, Class
String data = "Hello SecondActivity" ;
Intent intent = new Intent (當前Activity. this, 目標Activity.class ) ;
intent.putExtra( "傳入名稱", data) ;
startActivity(intent) ;
接受Activity代碼:
Intent intent = getIntent();
String data = intent.getStringExtra( "傳入名稱" );
Intent:用於參數回傳
先有傳入:
intent.setClass(MainActivity. this, Register_Activity.class );
startActivityForResult(intent,1);
startActivityForResult(Intent intent,int RequestCode);//把intent要啓動的目標Activity設置一個RequestCode值(當然RequestCode的值使大於等於0的一個值)。
在回傳:
Intent intent = new Intent();
intent.putExtra("data1",name.getText().toString() );
intent.putExtra("data2",textP1);
setResult(RESULT_OK,intent);
finish();//結束當前Activity
在接收:重寫方法 onActivityResult(intrequestCode, intresultCode,Intent data)
onActivityResult(int requestCode, int resultCode, Intent intent)
RequestCode的作用 :區別請求的activity,android將每個請求設定一個大於等於0的int值,這就是requestcode。
resultCode參數對應於子模塊中setResut(int resultCode, Intent intent)函數中的resultCode值,用於區別不同的返回結果(如請求正常、請求異常等)。
由此,在onActivityResult函數中即可利用requestCode區別開不同的返回結果。
而onActivityResult中的resultCode參數對應於子模塊中setResut(int resultCode, Intent intent)函數中的resultCode值,用於區別不同的返回結果(如請求正常、請求異常等)。
protected void onActivityResult(int requestCode, int resultCode , Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
data1 = data.getStringExtra( "data1");
data2 = data.getStringExtra( "data2");
name.setText( data1);
edit_pwd.setText( data2);
nameY = data1;
edit_pwdyY = data2;
}
break;
default:
}