浅谈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