編輯: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的全是些轉帖的,都是代碼,看著真心煩。
做音樂播放器,有時會要求EQ均衡器,但android默認的樣式是水平的,這時就需要費點心思了。先是實現默認SeekBar樣式的EQ均衡器:這是4.0以上默認樣式的 Se
Search (搜索)是Android平台的一個核心功能之一,用戶可以在手機搜索在線的或是本地的信息。Android平台為所有需要 提供搜索或是查詢功能的應用提供了一個
CyanogenMod 10(CM10),最新基於Android 4.1果凍豆版本的ROM,在今天對少數設備推出。版本10已經在過去的數月經歷了無數個夜晚的beta開發,
Preview data Preview callbackAndroid Camera小系統:嗯……直接看Camera HAL層,它實現是主