zoukankan      html  css  js  c++  java
  • 【转】Android进阶2之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 plaincopy
     
    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 plaincopy
     
    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 plaincopy
     
      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);  
      35.     }  
      36. }  
  • 相关阅读:
    (转)iOS分类和扩展(Categories和Extensions)
    (转)在Android的webview中定制js的alert,confirm和prompt对话框的方法
    (转)20 个大大节省你时间的 HTML5 开发工具
    (转)UIWebView与JavaScript的那些事儿
    ios调打电话代码
    iOS打电话、发邮件、发短信、打开浏览器
    (转)常见证书格式和转换
    (转)实战p12文件转pem文件
    (转)iOS如何取得APP的版本信息跟服务器对比进行升级提示?
    添加首部元素
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4479138.html
Copyright © 2011-2022 走看看