淺談startActivityForResult的使用方法____個人見解
阿新 • • 發佈:2018-12-24
淺談startActivityForResult的使用方法____個人見解
在啟動另外一個Activity的時候,有兩種方法:
一種是直接使用startActivity,
另外一種就是使用startActivityForResult。
startActivityForResult的主要作用就是它可以回傳資料
下邊這個例子看一看:
1.頁面跳轉的時候不採用startActivity(intent) ,而採用startActivityForResult(intent, 0)。
Intent intent = new Intent(MainActivity.this,ReceiveAcitivity.class); // 把et_input輸入框中的資訊設定在引數msg中 intent.putExtra("msg", "aaa"); // 執行跳轉 startActivityForResult(intent, 0); //這裡採用startActivityForResult來做跳轉,此處的0為一個依據,可以寫其他的值,但一定要>=0
2.重寫onActivityResult方法,用來接收B回傳的資料。
if (requestCode == 0) { if (resultCode == 1) { Toast.makeText(MainActivity.this, "這是從ReceiveActivity類回來的響應",Toast.LENGTH_LONG).show(); } }
3.在B中回傳資料時採用setResult方法,並且之後要呼叫finish方法。
intent = getIntent(); // 接收從MainActivity類傳遞過來的資訊msg String msg = intent.getStringExtra("msg"); //返回到MainActivity類 setResult(1); // finish本Activity finish();
4.這裡finish執行完 activity2 就關閉 開始執行步驟2中的onActivityResult方法 就能接通過發出的請求碼0 和 從activity返回的回覆碼1 一起來識別返回的資料
溫馨提示:
要想返回到Activity1 中onActivityResult方法 要在Activity 執行finish的時候,也就是說呼叫setResult()方法必須在finish()之前。
那麼如果在如下方法中呼叫setResult()也有可能不會返回成功: onPause(), onStop(), onDestroy(),
因為這些方法呼叫不一定是在finish之前的,當然在onCreate()就呼叫setResult肯定是在finish之前的
純屬個人見解,如有不周全的地方希望您留言指正 謝謝._____西貝二公子