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

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

猜你喜欢

转载自blog.csdn.net/hk121/article/details/85052328
今日推荐