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

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

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

主要功能:

在一个主界面(主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); }}

           

给我老师的人工智能教程打call!

这里写图片描述
你可能感兴趣的文章
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
Centos import torchvision 出现 No module named ‘_lzma‘
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>
python:如何将excel文件转化成CSV格式
查看>>