Intent的用法 意圖的分類和用法: 隱式意圖:通過指定一組數據或者動作實現 顯示意圖:通過指定具體的activity實現 意圖的用途: 顯示意圖用於開啟自己應用內的Activity. 隱式意圖用於開啟其他應用的Activity(主要是系統應用),相比顯示意圖安全性較差. 意圖的實現: 通過Int ...
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"); } }