1. 程式人生 > >淺談startActivityForResult的使用方法____個人見解

淺談startActivityForResult的使用方法____個人見解

淺談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之前的

 
純屬個人見解,如有不周全的地方希望您留言指正 謝謝._____西貝二公子