浅谈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之前的

 
 
纯属个人见解,如有不周全的地方希望您留言指正 谢谢._____西贝二公子

 

转载于:https://www.cnblogs.com/jfice/p/6617719.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值