關於Android中startActivityForResult()方法的詳細使用

來源:互聯網
上載者:User

前提條件,Activity的之間的調用關係:A --> B,即Activity A啟動了Activity B      在A中啟動B的代碼:startActivityForResult(new Intent("ActivityB"), 100)

      此方法與startActivity(Intent intent)方法最重要的區別就是:該方法是帶傳回值的,所謂傳回值其實是:你所啟動的那個Activity調用了finish()方法或者是按下了Back鍵被destory()掉之後,然後就會有一個傳回值。如果你要使用該傳回值的資訊,必須要在你之前的Activity A中Override父類的onActivityResult(int requestCode, int resultCode, Intent
data)方法,等到ActivityB銷毀後,會自動執行A中的onActivityResult(int requestCode, int resultCode, Intent data)方法,其中的requestCode就是你之前在A中調用B的那個requestCode,即100.而第二個參數resultCode則一般是我們在ActivityB銷毀之前,手動設定的一個標誌值,即在ActivityB中的設定代碼:setResult(200);;finish();即先設定值,然後finish掉B,這樣我們就把我們自己設定的resultCode:200也返回給了A。此時在A中的onActivityResult()方法中,就可以同時接收到這兩個值了。

      為什麼我們要在B中手動設定resultCode呢?因為,假如果有時候我們需要在B中點擊了一個按鈕(或者是其他動作)之後,我們需要回到A,即我們會調用A的finish方法,但是如果使用者是直接按下了Back鍵將Afinish掉的,此時我們在A中就不知道B究竟是以何種方式finish掉的,所以我們設定了此結果標誌位。另外,有些人還需要在B finish掉的同時,給A帶回一些資料。例如,假如果現在B是登入介面,而我要實現的是,在B介面中登入成功後,將使用者名稱返回給A。如上,我們就必須要使用setResult()的另外一個重載(Overload)的方法了:setResult(int
resultCoe, Intent data),即我們也可以像兩個Activity之間傳遞資料一樣,使用Intent對象來傳遞。即我們可以將我們的資料放到intent中,最後再用setResult(200,data)同時將標誌位200和我們自己的使用者名稱資料傳遞給A。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.