Android組件通信與廣播消息(3)—獲取 Activity 的返回值

經過 startActivity(Intent) 方法啓動 Activity,啓動後的兩個 Activity 之間相互獨立,沒有任何的關聯。但一般狀況下,須要後啓動的 Activity 關閉時返回信息給先前啓動的 Activity 。後啓動的稱爲「子Activity」,先啓動的稱爲「父Activity」。java

獲取 子Activity 返回值步驟:

1.Sub-Activity 方式啓動 子Activity 

以 Sub-Activity 方式啓動子Activity,須要調用 startActivityForResult(Intent,requestCode) 函數ide

1)顯式啓動 子Activity

int SUBACTIVITY1 = 1;
Intent intent = new Intent(MainActivity.this,SubActivity1.class);
startActivityForResult(intent, SUBACTIVITY1);

2)隱式啓動 子Activity

int SUBACTIVITY1 = 1;
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("https://my.oschina.net/zhangyujian/blog"));
startActivityForResult(intent,SUBACTIVITY1);
  • startActivityForResult(Intent,requestCode)參數說明:
  • 參數 Intent: 決定啓動哪一個 Activity
  • 參數 requestCode:請求碼,肯定是哪個 子Activity 返回的數據

2.設置 子Activity 的返回值

Uri data = Uri.parse("tel:"+tel_number);
Intent result = new Intent(null,data);
// putExtra 用於附加額外信息
result.putExtra("address","SWUST");
setResult(RESULT_OK,result);
finish();

 說明:子Activity 調用 finish() 函數關閉以前,調用 setResult() 函數設定須要返回給 父Activity 的數據函數

  • setResult(resultCode,result) 參數說明:
  • 參數 resultCode:是結果碼,RESULT_OK(正常返回) / RESULT_CANCELED(取消返回)
  • 參數 result:是返回值,主要以 Uri 形式返回給 父Activity

3.在 父Activity 中獲取返回值

private static int SUBACTIVITY1 = 1;
    private static int SUBACTIVITY2 = 2;
	@Override
		public void onActivityResult(int requestCode, int resultCode, Intent data){
		    super.onActivityResult(requestCode, resultCode, data);
			
            switch(requestCode){
			case SUBACTIVITY1:
				if(resultCode == RESULT_OK){
					Uri uriData = data.getData();
                   //響應操做,經過textView查看返回值
					textView.setText(uriData.toString());
				}else if(resultCode == RESULT_CANCELED)
                {}
				break;
			case SUBACTIVITY2:
                if(resultCode == RESULT_OK){
					Uri uriData = data.getData();
                   //響應操做,經過textView查看返回值
					textView.setText(uriData.toString());
				}else if(resultCode == RESULT_CANCELED)
                {}
				break;
			}
		
		}

說明:重載 onActivityResult() 函數實現this

  • onActivityResult(requestCode, resultCode, data) 參數說明:
  • 參數 requestCode:是請求碼,判斷是哪一個 子Activity 返回的
  • 參數 resultCode:代表 子Activity  數據返回狀態
  • 參數 data :表示返回的 Uri 數據

 

經過簡單的監聽事件加關鍵代碼便可驗證功能。spa

相關文章
相關標籤/搜索