1. 程式人生 > >安卓基礎之Intent的用法

安卓基礎之Intent的用法

Intent的用法


意圖的分類和用法:

隱式意圖:通過指定一組資料或者動作實現

Intent intent=new Intent();
intent.setAction("");
intent.addCatogary("");
intent.setDataAndType("","");         //或者intent.setData,具體根據清單檔案配置
startActivity(intent);

顯示意圖:通過指定具體的activity實現

Intent intent=new Intent(this,TestActivity.class);
startActivity(intent);
意圖的用途:

顯示意圖用於開啟自己應用內的Activity.

隱式意圖用於開啟其他應用的Activity(主要是系統應用),相比顯示意圖安全性較差.

意圖的實現:

通過Intent由MainActivity.class跳轉至TestActivity.class:

MainActivity.class要實現程式碼:

Intent intent=new Intent(this,TestActivity.class); String name="eason"; Intent intent=new Intent(this,TestActivity.class); intent.putExtra("name",name); //Activity間資料傳遞的方法 startActivity(intent);

TestActivity.class要實現程式碼:

Intent intent=getIntent();
String name=intent.getStringExtra("name");      //傳遞的是什麼資料型別,就按照傳遞的資料型別取

在以上的例子中,資料由MainActivity傳到了TestActivity.class,那麼如果想要把TestActivity.class資料返回給MainActivity要怎麼做呢?

假如在TestActivity.class頁面中點選按鈕把選中號碼返回,

那麼TestActivity.class要實現程式碼:

public void onclick(View view){
Intent intent=new Intent();
String phone="123";
intent.putExtra("phone",phone);
setResult(10,intent);       //呼叫父類的方法setRequest(int Resustcode,Intent),設定請求碼
finish();                   //該方法將結束當前Activity,返回喚醒該Activity的Activity
}

MainActivity.class要實現的程式碼:

  1. 採用startActivityForRequest()方法而不是startActivity()

    Intent intent=new Intent(this,TestActivity.class);
    
    //設定請求碼,startActivityForResult(Intent intent,int requestcode)
    startActivityForResult(intent,1);    
    
  2. 重寫方法onActivityResult()

    //該方法在我們開啟的Activity關閉時呼叫
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
    if(resultCode==10){                          //通過請求碼或者結果碼,可以辨別返回資料的來源
    String phone=data.getStringExtra("phone");
    }
    }