• 【转】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. }  
  • 相关阅读:
    Caused by: java.io.IOException: Type mismath in vlaue from map: excepted org.apache.hadoop.io.InaWritable,received SC
    Caused by:java.lang.ClassNotFoundException:org.apache.hadoop.yarn.util.Apps
    Ubuntu下的eclipse配置MapReduce
    C#语法糖(Csharp Syntactic sugar)大汇总 分类: .NET 2013-07-25 06:32 412人阅读 评论(0) 收藏
    SQLite3 一列多行合并为一列一行 分类: 数据库 2013-06-25 17:02 1251人阅读 评论(0) 收藏
    Spring Boot中集成Mybaties
    Spring Boot中的注解(annotation)
    Spring Boot中获取.properties出现乱
    Andriod 权限
    Andriod中的屏幕适配
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4479138.html
Copyright © 2020-2023  润新知