Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> android中使用startActivityForResult回傳數據

android中使用startActivityForResult回傳數據

編輯:Android開發教程

假設:我這裡有兩個Activity:A和B從A中向B中傳遞數據的時候采用的是Bundle封裝數據,然後從A中跳轉到B中,當B有需求 將數據封裝起來回傳給A並跳轉回A。

那麼A中接收數據時還要先判斷Bundle是否為空,因為第一次訪問A的時候(即B還沒 有回傳的時候),Bundle是為空的,這樣顯然是比較麻煩的,不明智的做法。

還好startActivityForResult來做跳轉給了 我們更好的解決辦法:

1.跳轉的時候不是采用startActivity(intent) 這個方法,而是startActivityForResult (intent, 0)。

Intent intent=new Intent();
intent.setClass(A.this, B.class);
Bundle bundle=new Bundle();
String str1="aaaaaa";
bundle.putString("str1", str1);
intent.putExtras(bundle);
startActivityForResult(intent, 0);//這裡采用startActivityForResult來做跳轉,此處的0為一個依據,可以寫其他的值, 但一定要>=0

2.重寫onActivityResult方法,用來接收B回傳的數據。

protected void onActivityResult(int requestCode, 

int resultCode, Intent data) {
switch (resultCode) { //resultCode為回傳的標記,我在B中回傳的是 RESULT_OK
case RESULT_OK:
Bundle b=data.getExtras(); //data為B中回傳的 Intent
String str=b.getString("str1");//str即為回傳的值
break;
default:
break;
}
}

3.在B中回傳數據時采用setResult方法,並且之後要調用finish方法。

setResult(RESULT_OK, intent); //intent為A傳來的帶有Bundle的intent,當然也可以自己定義新的Bundle

finish();//此處一定要調用finish()方法

這樣當B中調用finish方法的時候,跳轉到A時會自動調用onActivityResult方法,來獲取B中回傳的intent了。

詳細的代 碼不貼了,那純屬浪費時間,網上關於startActivityForResult的全是些轉帖的,都是代碼,看著真心煩。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved