關於android Intent的初步學習

初步探索及使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章