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

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

 


免責聲明!

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



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