安卓基礎之Intent的用法
阿新 • • 發佈:2018-11-13
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要實現的程式碼:
採用startActivityForRequest()方法而不是startActivity()
Intent intent=new Intent(this,TestActivity.class); //設定請求碼,startActivityForResult(Intent intent,int requestcode) startActivityForResult(intent,1);
重寫方法onActivityResult()
//該方法在我們開啟的Activity關閉時呼叫 protected void onActivityResult(int requestCode,int resultCode,Intent data){ if(resultCode==10){ //通過請求碼或者結果碼,可以辨別返回資料的來源 String phone=data.getStringExtra("phone"); } }