初步探索及使用Intent
Intent的定義
Intent對象是component用來與操作系統通信的媒介工具,這裏用於Activity之間的通信。
//一種簡單的顯示調用
xxxx.setOnClickListener(new View.OnClickListen(){
@Override
public void onClick(){
Intent i = new Intent(NowActivity.this, nextActivity.class)
//Intent的構造方法 public Intent(Context packageContext,Class<?> cls)
startActivity(i);
}
});
Activity間的數據傳遞
數據傳遞需要調用Intent.putExtra(...)方法。
- 舉例一,使用Intent簡單傳遞數據
public Intent putExtra(String name, boolean value)
參數一是固定爲String類型的鍵,參數二可以是多種數據類型。並返回intent自身
public boolean getBooleanExtra(String name, boolean defaultValue)
參數一extra的名字,即鍵,參數二是指定默認值(默認結果),在無法取得有效鍵值的時候調用
//初始activity處代碼
Intent i = new Intent(Context packageContext, nextActivity.class)
//一、新建一個Intent對象,並定好上下文
i.putExtra(String name, data);
//二、封裝數據
startActivity(i);
//三、啓動目標Activity
//被調用activity處代碼,從extra中取數據
data = getIntent().getBooleanExtra(name, false);
//取值,Activity.getIntent()方法返回了有startActivity(Intent)方法轉發的Intent對象
舉例二,從子Activity獲取返回結果
父activity代碼
public void startActivityForResult(Intent intent, int requestCode);
參數一同前述的Intent,參數二是請求代碼。請求代碼是先發送給子activity,然後再返回給
父activity的用戶定義整數值。當一個activity啓動多個不同類型的子activity,且需要判斷區
分消息回饋方時,通常會用到改請求代碼。子activity代碼
public final void setResult(int resultCode)
public final void setResult(int resultCode, Intent data)
其中的resultcode是結果代碼,它指定爲RESULT_OK或RESULT_CANCELED,當用戶不掉用
setResult()方法是,系統默認發送結果代碼”RESULT_CANCELED”,當讓,我們要子Activity
返回數據,在此選擇第二種方法。
//初始activity處代碼
Intent i = new Intent(Context packageContext, nextActivity.class)
// startActivity(i); 其他同上,換一種啓動方式
startActivityForResult(i, 0);
//子activity處代碼
Intent result = new Intent();
//新建Intent對象
result.putExtra(String name, data);
setResult(RESULT_OK, result);
//調用setResult()方法
//父activity讀取Extra
data = getIntent().getBooleanExtra(name, false);
小結
今天斷斷續續的學習,算是看懂了點Intent的運作。2017/3/12