博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android进阶2之Activity之间数据交流(onActivityResult的用法)
阅读量:7157 次
发布时间:2019-06-29

本文共 4635 字,大约阅读时间需要 15 分钟。

主要功能:

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

<1>startActivityForResult( intent, int requestCode);

第一个参数:一个Intent对象

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

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

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

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

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

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

<3>setResult(int resultCode,  data)

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

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

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

 

       

   

 

 

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

同理:

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

具体实现:

主Activity:

package xiaosi.onActivityResult; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class OnActivityResultActivity extends Activity { private Button button = null; private Button button1 = null; private TextView text = null; private static final int Mars = 0; private static final int Moon = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text = (TextView) findViewById(R.id.text); button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(OnActivityResultActivity.this, otherActivity.class); String content = "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们的火星呀"; intent.putExtra("FromEarth", content); startActivityForResult(intent, Mars); } }); button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(OnActivityResultActivity.this, thirdActivity.class); String content = "地球来的消息:你好,我是来自地球上的小老鼠。我好想去你们月球"; intent.putExtra("FromEarth", content); startActivityForResult(intent, Moon); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case Mars: Bundle MarsBuddle = data.getExtras(); String MarsMessage = MarsBuddle.getString("FromMars"); text.setText(MarsMessage); break; case Moon: Bundle MoonBuddle = data.getExtras(); String MoonMessage = MoonBuddle.getString("FromMoon"); text.setText(MoonMessage); break; } } }

otherActivity:

package xiaosi.onActivityResult; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class otherActivity extends Activity { private Button button = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.other); Intent EarthIntent = getIntent(); String EarthMessage = EarthIntent.getStringExtra("FromEarth"); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(otherActivity.this, OnActivityResultActivity.class); String passString = "火星来的消息:Hello,我是火星的Jack,非常高兴你能来火星"; intent.putExtra("FromMars", passString); setResult(RESULT_OK, intent); finish(); } }); TextView textView = (TextView) findViewById(R.id.othertext); textView.setText(EarthMessage); } }

thirdActivity:

package xiaosi.onActivityResult; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class thirdActivity extends Activity { private Button button = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.third); Intent EarthIntent = getIntent(); String EarthMessage = EarthIntent.getStringExtra("FromEarth"); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(thirdActivity.this, OnActivityResultActivity.class); String passString = "月球来的消息:Hello,我是月球的Lucy,非常欢迎你来月球"; intent.putExtra("FromMoon", passString); setResult(RESULT_OK, intent); finish(); } }); TextView textView = (TextView) findViewById(R.id.thirdtext); textView.setText(EarthMessage); } }

转载地址:http://biegl.baihongyu.com/

你可能感兴趣的文章
数字万用表的使用_易天教学
查看>>
Hexo+Github部署自己的博客
查看>>
shell 目录
查看>>
初用 Git 小问题解决备忘录
查看>>
yii 显示调试信息及数据库配置
查看>>
mysql 用户权限操作
查看>>
php练习作品-汽车多店维修预约平台
查看>>
sqlite rowid与主键
查看>>
vim 使用笔记
查看>>
Spring中Singleton模式的线程安全
查看>>
Python使用UUID库生成唯一ID
查看>>
<Tag> tld的配置
查看>>
datesheet你看懂了吗?
查看>>
第一课 redis安装配置
查看>>
ECharts简介及入门
查看>>
亿级Web系统搭建:单机到分布式集群
查看>>
【开源项目】之照明智能开关
查看>>
DB2 全库查询赋权
查看>>
glibc中的hsearch_r函数
查看>>
Android如何添加系统长按键功能
查看>>