原文网址:http://blog.csdn.net/sjf0115/article/details/7387467

主要功能:

在一个主界面(主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:

  1. package xiaosi.onActivityResult;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import android.widget.TextView;
  9. public class OnActivityResultActivity extends Activity
  10. {
  11. private Button              button  = null;
  12. private Button              button1 = null;
  13. private TextView            text    = null;
  14. private static final int    Mars    = 0;
  15. private static final int    Moon    = 1;
  16. @Override
  17. public void onCreate(Bundle savedInstanceState)
  18. {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. text = (TextView) findViewById(R.id.text);
  22. button = (Button) findViewById(R.id.button);
  23. button.setOnClickListener(new OnClickListener() {
  24. @Override
  25. public void onClick(View v)
  26. {
  27. Intent intent = new Intent(OnActivityResultActivity.this, otherActivity.class);
  28. String content = "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们的火星呀";
  29. intent.putExtra("FromEarth", content);
  30. startActivityForResult(intent, Mars);
  31. }
  32. });
  33. button1 = (Button) findViewById(R.id.button1);
  34. button1.setOnClickListener(new OnClickListener() {
  35. @Override
  36. public void onClick(View v)
  37. {
  38. Intent intent = new Intent(OnActivityResultActivity.this, thirdActivity.class);
  39. String content = "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们月球";
  40. intent.putExtra("FromEarth", content);
  41. startActivityForResult(intent, Moon);
  42. }
  43. });
  44. }
  45. @Override
  46. protected void onActivityResult(int requestCode, int resultCode, Intent data)
  47. {
  48. switch (requestCode)
  49. {
  50. case Mars:
  51. Bundle MarsBuddle = data.getExtras();
  52. String MarsMessage = MarsBuddle.getString("FromMars");
  53. text.setText(MarsMessage);
  54. break;
  55. case Moon:
  56. Bundle MoonBuddle = data.getExtras();
  57. String MoonMessage = MoonBuddle.getString("FromMoon");
  58. text.setText(MoonMessage);
  59. break;
  60. }
  61. }
  62. }

otherActivity:

  1. package xiaosi.onActivityResult;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.TextView;
  8. public class otherActivity extends Activity
  9. {
  10. private Button  button  = null;
  11. @Override
  12. public void onCreate(Bundle savedInstanceState)
  13. {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.other);
  16. Intent EarthIntent = getIntent();
  17. String EarthMessage = EarthIntent.getStringExtra("FromEarth");
  18. button = (Button) findViewById(R.id.button);
  19. button.setOnClickListener(new View.OnClickListener() {
  20. @Override
  21. public void onClick(View v)
  22. {
  23. Intent intent = new Intent(otherActivity.this, OnActivityResultActivity.class);
  24. String passString = "火星来的消息:Hello,我是火星的Jack,非常高兴你能来火星";
  25. intent.putExtra("FromMars", passString);
  26. setResult(RESULT_OK, intent);
  27. finish();
  28. }
  29. });
  30. TextView textView = (TextView) findViewById(R.id.othertext);
  31. textView.setText(EarthMessage);
  32. }
  33. }

thirdActivity:

    1. package xiaosi.onActivityResult;
    2. import android.app.Activity;
    3. import android.content.Intent;
    4. import android.os.Bundle;
    5. import android.view.View;
    6. import android.widget.Button;
    7. import android.widget.TextView;
    8. public class thirdActivity extends Activity
    9. {
    10. private Button  button  = null;
    11. @Override
    12. public void onCreate(Bundle savedInstanceState)
    13. {
    14. super.onCreate(savedInstanceState);
    15. setContentView(R.layout.third);
    16. Intent EarthIntent = getIntent();
    17. String EarthMessage = EarthIntent.getStringExtra("FromEarth");
    18. button = (Button) findViewById(R.id.button);
    19. button.setOnClickListener(new View.OnClickListener() {
    20. @Override
    21. public void onClick(View v)
    22. {
    23. Intent intent = new Intent(thirdActivity.this, OnActivityResultActivity.class);
    24. String passString = "月球来的消息:Hello,我是月球的Lucy,非常欢迎你来月球";
    25. intent.putExtra("FromMoon", passString);
    26. setResult(RESULT_OK, intent);
    27. finish();
    28. }
    29. });
    30. TextView textView = (TextView) findViewById(R.id.thirdtext);
    31. textView.setText(EarthMessage);
    32. }
    33. }

【转】Android进阶2之Activity之间数据交流(onActivityResult的用法)----不错的更多相关文章

  1. Android进阶2之Activity之间数据交流(onActivityResult的用法) (转载)

    转自:http://blog.csdn.net/sjf0115/article/details/7387467 主要功能: 在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activ ...

  2. Activity之间数据交流(onActivityResult的用法)

    http://www.blogjava.net/mixer-a/archive/2012/03/23/375014.html http://www.cnblogs.com/linjiqin/archi ...

  3. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  4. Android——不同activity之间数据传递

    /* * 不同activity之间数据的传递 */ public class MainActivity extends Activity { private EditText et_name; @Ov ...

  5. 解析activity之间数据传递方法的详解

    转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下     1  基于消息的通信机制 ...

  6. android Activity之间数据传递 Parcelable和Serializable接口的使用

    Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去.传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口.0.解 ...

  7. Android activity之间数据传递和共享的方式之Application

    1.基于消息的通信机制  Intent ---bundle ,extra 数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream,或者LinkedList链表等等数据类型就不太好用 ...

  8. Android 笔记-Fragment 与 Activity之间传递数据

    Fragment 与 Activity之间传递数据有两种方法.一种是使用setArgument,一种是使用接口回调.以下先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这 ...

  9. android 不同Activity之间数据传递

    1. 传值Activity package mydemo.mycom.demo2; import android.content.Intent; import android.support.v7.a ...

随机推荐

  1. win7方面API學習

    Getting Applicateion Data Folder Paths Win32 #include <shlobj.h> //link with shell32.lib PWSTR ...

  2. Git 版本控制工具使用介绍------Windows系统下使用

    Git 是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什 ...

  3. iPad横竖屏代码适配

    你可能非常了解用不同的方式去适配不同尺寸的iPhone屏幕,在适配iPhone屏幕时你需要考虑的只是屏幕大小变化带来的UI元素间隔的变化,但是在iPad上主要针对的是横竖屏下完全不同的UI元素的布局, ...

  4. Python访问sqlite3数据库取得dictionary的正路!

    [引子] 很多人都知道,Python里是内置了很好用的sqlite3的.但这个库有个缺陷,在执行fetchall()/fetchone()等方法后,得到的是一个tuple.以前吧,做自己的小项目,tu ...

  5. 12、SQL Server 行列转换

    SQL Server 行转列 在SQL Server 2005中PIVOT 用于将列值转换为列名(行转列),在SQL Server 2000中是没有这个关键字的 只能用case语句实现. --创建测试 ...

  6. c# 用正则表达式获取开始和结束字符串中间的值

    c# 用正则表达式获取开始和结束字符串中间的值 /// <summary> /// 获得字符串中开始和结束字符串中间得值 /// </summary> /// <para ...

  7. 将对象保存至文件——CArchive

    CArchive允许以一个二进制的形式保存一个对象的复杂网络,也可以再次装载它们,在内存中重新构造,这一过程叫作串行化/序列化(Serialization),简单的说,CArchive与CFile配合 ...

  8. 跟我学android-常用控件之EditText

    EditText 是TextView的直接子类,它与TextView的区别在于,EditText可以接受用户输入. 下面通过一个实例来说明EditText的用法 实例:sina 微博的登录界面(注意, ...

  9. jqgrid设置单元格数据

    $("#gridid").jqGrid('setCell',rowid,icol,data); rowid为行ID,jqgrid内置的那个,从1开始 icol为列索引,从0开始, ...

  10. MyBatis学习笔记(1) —— 基础知识

    mybatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,mybatis 清除了几乎所有的jdbc代码和参数的手工设置及对结果集的检索封装.mybatis可以使用简单的xml和注解用于 ...