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

转载: 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:
[java]   view plain copy

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

otherActivity:
[java]  view plain copy

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

thirdActivity:
[java]  view plain copy

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

你可能感兴趣的:(Activity之间数据交流(onActivityResult的用法))