android StartActivityForResult()方法詳解

鴨脖發表於2012-07-25

startActivity方法的引數是intent,用於acitivity之間的普通跳轉

但是當一個activity跳轉至多個activity,並且需要從這些activity中或許相關的資料的時候,我們需要使用startctivityForResult方法,該方法的引數是Intent物件,指明要跳轉的activity物件,第二個是request code,這可以在回撥的時候判斷從哪個activity中回撥過來的,相當語給這些activity標上一些標誌。回撥的時候根據這些request來判斷actiivty。那麼用該方法跳轉的activity在finish的時候都會回撥原來activity的onActivityResult方法,那麼你如果想從目標activity獲取資料的話,就必須在目標activityfinish之前new一個intent,並且把這個activity中你想要的東西放入這個intent中,肯定需要一個方法,那麼這個方法就是setResult方法,引數是resultCode和intent物件。那麼這個resultCode和request的作用相似,因為你在原來的activity裡可能會在程式的兩個不同的地方跳轉到同一個activity類的兩個物件,那麼這個時候requestCode作用就來區分。那麼你在目標activity中也可能會從兩個不同地方finish,那麼這個時候resultCode的作用就是區分這些地方。


那麼最重要的還是原來activity中的onActivityResult方法了,引數分別是requstCode,resultCode,和intent物件,在內部可以用switch結構來對不同的回撥進行區分並且分別進行處理,傳送過來的資料就儲存在intent物件中。從中取出相應的資料並可以獲取資料了。


這是通過回撥機制來實現activity之間的通訊的。



相關文章