zoukankan      html  css  js  c++  java
  • (转载)Android进阶2之Activity之间数据交流(onActivityResult的用法)

    转载自  http://www.blogjava.net/mixer-a/archive/2012/03/23/375014.html

    主要功能:

    在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

    <1>startActivityForResult(Intent intent, int requestCode);

    第一个参数:一个Intent对象

    第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回

    <2>onActivityResult(int requestCode, int resultCode, Intent data)

    第一个参数:这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。

                这个requestCode和startActivityForResult中的requestCode相对应。

    第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。

    第三个参数:一个Intent对象,带有返回的数据。

    <3>setResult(int resultCode, Intent data)

    调用这个方法把Activity想要返回的数据返回到父Activity

    第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。

    第二个参数:一个Intent对象,返回给父Activity的数据。

     

     

           

       

     

    本实例一共有三个Activity。点击飞往火星跳转到otherActivity,把地球带给火星的消息显示在otherActivity中。点击返回地球时把火星带给地球的消息传到主Activity.

    同理:

    点击飞往月球跳转到thirdActivity,把地球带给月球的消息显示在thirdActivity中。点击返回地球时把月球带给地球的消息传到主Activity.

     

    具体实现:

    主Activity:


    otherActivity:

    thirdActivity:

     

     

     

    转载自   http://www.2cto.com/kf/201205/133027.html

     

    androidActivity之间的跳转不只是有startActivity(Intent i)的,startActivityForResult(Intent intent, int requestCode)也是常用的方法。

       其作用是可以用onActivityResult(int requestCode, int resultCode, Intent data)方法获得请求Activity结束之后的操作。    需要注意三个方法:startActivityForResult(Intent intent, int requestCode),onActivityResult(int requestCode, int resultCode, Intent data),setResult(int resultCode, Intent data)

    例如如下代码:从From跳转至ToB和ToC From: if(条件){ Intent intent = new Intent(this, ToB.class); startActivityForResult(serverIntent, REQUEST_CODE_01);//跳转至ToB }else{ Intent intent = new Intent(this, ToC.class); startActivityForResult(serverIntent, REQUEST_CODE_02);//跳转至ToC }   public void onActivityResult(int requestCode, int resultCode, Intent data){           switch (requestCode) { case REQUEST_CODE_01:                         if(resultCode==Activity.RESULT_OK)                         //do something                         break;                 case REQUEST_CODE_02: //do something                         break; } }         这里说说startActivityForResult(Intent intent, int requestCode)的参数,第一个Intent不用说了,需要注意的是第二个,我们用的是REQUEST_CODE_01和REQUEST_CODE_02,其实这个是我们自己定义的一个int型常量,用于标记的,具体作用可在onActivityResult方法里看到,用于判断是从哪个Activity返回的。   ToB: Intent intent = new Intent(); intent.putExtra(key, value); setResult(Activity.RESULT_OK, intent); finish();//结束之后会将结果传回From   ToC: Intent intent = new Intent(); intent.putExtra(key, value); setResult(Activity.RESULT_OK, intent); finish();//结束之后会将结果传回From      setResult的第一个参数对应上面onActivityResult的第二个参数,注意别把onActivityResult的第一个参数与第二个参数搞混淆了,一个是请求标记,一个是返回标记。   欢迎补充~~~

  • 相关阅读:
    异步上传文件、图片
    Excel文件上传,高亮错误的行和列
    生成缩略图
    发送邮件
    饿补基础知识
    Visual 2012 常用快捷键
    C# Ref 与out 的区别
    javascript 动态操作Html
    XmlHttpRequest 使用
    CentOS PHP-5.4.8 编译安装之初体验
  • 原文地址:https://www.cnblogs.com/zqq965774513/p/3571007.html
Copyright © 2011-2022 走看看