【Android】Intent的使用-返回數據給上一個活動


第一個Activity  A啟動另外一個Activity B,B返回數據給A

=============================================================================

在A中:

Intent intent = new Intent(A, B);
startActivityForResult(intent, 1);


startActivityForResult()方法接收兩個參數,第一個參數還是 Intent,第二個參數是請求碼(只要是唯一值就可以),用於在之后的回調中判斷數據的來源。

=============================================================================

在B中:

Intent intent = new Intent();
intent.putExtra("data_return", "Hello A");
setResult(RESULT_OK, intent);
finish();

setResult()方法接收兩個參數,第一個參數用於向上一個活動返回處理結果,一般只使用 RESULT_OK 或RESULT_CANCELED 這兩個值,第二個參數則是把帶有數據的 Intent 傳遞回去,然后調用了 finish()方法來銷毀當前活動。

=============================================================================由於我們是使用 startActivityForResult()方法來啟動 B 的, 在 B被銷毀之后會回調上一個活動的 onActivityResult()方法,因此我們需要在 A中重寫這個方法來得到返回的數據

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity", returnedData);
}
break;
default:
}
}

onActivityResult()方法帶有三個參數,第一個參數 requestCode,即我們在啟動活動時傳入的請求碼。 第二個參數 resultCode, 即我們在返回數據時傳入的處理結果。 第三個參數 data,即攜帶着返回數據的 Intent。由於在一個活動中有可能調用 startActivityForResult()方法去啟動很多不同的活動,每一個活動返回的數據都會回調到 onActivityResult()這個方法中,因此我們首先要做的就是通過檢查 requestCode 的值來判斷數據來源。確定數據是從B 返回的之后,我們再通過 resultCode 的值來判斷處理結果是否成功。最后從data中取值並打印出來,這樣就完成了向上一個活動返回數據的工作。

================================================================================

《第一行代碼》筆記

================================================================================


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM