在实际的应用中,我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递类似,也可以采用上一讲中的四种方式来传递数据,但是一般建议采用Intent对象的方式的来返回数据,使用这种方式返回数据,需要使用StartActivityForResult方法来显示Activity。

  需求:如下图所示:输入 a 和 b 的值,然后点击输入计算机结果,跳转到另外Activity,输入结果,点击得出结果按钮,将得到的数值放在 第三个输入框中。使用StartActivityForResult()方式来实现。

  

  程序Demo:

  1. IntentResult.java

public class IntentResult extends Activity {

    private Button button;
private EditText inputA, inputB, result;
private final static int RESQUESTCODE = 1;
private final static int RESULTCODE_TO_INTENTRESULT = 2; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initComponent();
button.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
int a = Integer.parseInt(inputA.getText().toString());
int b = Integer.parseInt(inputB.getText().toString()); Intent intent = new Intent(IntentResult.this, Other.class);
intent.putExtra("a", a);
intent.putExtra("b", b);
startActivityForResult(intent, RESQUESTCODE); // 如果RESQUESTCODE
// >= 0,表示可以返回结果
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
// resultCode == RESULT_OK 表示另外一个Activity已经结束了功能
if (resultCode == RESULTCODE_TO_INTENTRESULT) {
if (requestCode == RESQUESTCODE) {
int returnResult = data.getIntExtra("result", 0);
result.setText(String.valueOf(returnResult));
} }
} private void initComponent() {
button = (Button) findViewById(R.id.button);
inputA = (EditText) findViewById(R.id.one);
inputB = (EditText) findViewById(R.id.two);
result = (EditText) findViewById(R.id.three);
}
}

  2. Other.java

public class Other extends Activity {

    private Button button;
private TextView tx;
private EditText inputResult;
private final static int RESULTCODE_TO_INTENTRESULT = 2; /*
* public int getIntExtra (String name, int defaultValue) defaultValue
* 默认值是0,则返回键所对应的值
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
initComponent();
Intent intent = getIntent();
int a = intent.getIntExtra("a", 0);
int b = intent.getIntExtra("b", 0);
tx.setText(a + " + " + b + " = ? "); button.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
int result = Integer.parseInt(inputResult.getText().toString());
Intent intent = new Intent();
intent.putExtra("result", result);
// 通过Intent对象返回结果,setResult方法 // 注意:在setResult(resultCode,
// data)方法中,resultCode表示从Other这个Activity跳转到IntentResult这个Activity的标记,必须是大于1的整数
// 注意的时候resultCode 必须与IntentResult中的 onActivityResult(int
// requestCode, int resultCode, Intent data)的参数resultCode要一致的。 setResult(RESULTCODE_TO_INTENTRESULT, intent);
finish();// 结束当前的Activity的声明周期
}
});
} private void initComponent() { button = (Button) findViewById(R.id.button);
inputResult = (EditText) findViewById(R.id.result);
tx = (TextView) findViewById(R.id.msg);
}
}

本文转自http://blog.csdn.net/ahuier/article/details/8958128

【Android 复习】:从Activity中返回数据的更多相关文章

  1. 从Activity中返回数据

    从Activity中返回数据 一.简介 这里也就是使用intent方式返回数据. 二.具体步骤 在MainActivity通过一个button访问Activity01页面,然后将Activity01页 ...

  2. 【Android 复习】 : Activity之间传递数据的几种方式

    在Android开发中,我们通常需要在不同的Activity之间传递数据,下面我们就来总结一下在Activity之间数据传递的几种方式. 1. 使用Intent来传递数据 Intent表示意图,很多时 ...

  3. Android笔记——Activity中的数据传递案例(用户注冊)

    1.创建程序activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  4. 【Android初级】利用startActivityForResult返回数据到前一个Activity(附源码+解析)

    在Android里面,从一个Activity跳转到另一个Activity.再返回,前一个Activity默认是能够保存数据和状态的.但这次我想通过利用startActivityForResult达到相 ...

  5. Android 实现在Activity中操作刷新另外一个Activity数据列表

    做android项目中遇到这样一个问题:有两个acticity,一个显示好友列表,另外一个显示会话列表,现在问题是在会话界面增加一个添加好友功能,添加好友后要求实时的刷新好友列表. 想了想,找了两种方 ...

  6. android中返回数据给上一个活动,可以用来回显数据

    (一)who简介:没错,就是startActivityForResult()方法,这个方法用来在活动被销毁的时候返回数据给上一个方法.参数说明: startActivityForResult(inte ...

  7. Android复习笔记--Activity

    #Activity注册 Android四大组件(Activity,Service,Broadcast Receiver, Content Provider)都需要在AndroidManifest中注册 ...

  8. 【Android】Intent的使用-返回数据给上一个活动

    第一个Activity  A启动另外一个Activity B,B返回数据给A ============================================================= ...

  9. Android学习之Activity之间的数据传递

    Activity与Activity之间很多情况下都需要进行数据的传递,下面就用几个简单的例子来看一下. (一).一个Activity启动另一个Activity并将数据传递到这个Activity当中 思 ...

随机推荐

  1. oracle从各个表取得数据保存到另一个表

    从各个表中取得数据保存另一个表中: CREATE VIEW PARAMETER_view ASWITH tall AS ( SELECT p.PI_NO,--产品序列号 p.SERIALNO,--产品 ...

  2. java- 枚举的常见用法

    用法一:常量 public enum MyColor{Red,Black,Blue} public enum Color { RED, GREEN, BLANK, YELLOW } enum为枚举类的 ...

  3. 【转】iOS屏幕适配

    一.iOS屏幕适配发展历程 设备 适配技术 4及以前(iPad未出) 直接用代码计算 有了iPad autoResizing 有不同屏幕的iPhone后 autoLayout 有更多不同屏幕的iPho ...

  4. iOS afnetworking最新版报错 没有AFHTTPRequestOperationManager类了

    今天开了一个小项目   用的是pod   然后  安装好 Afnetworking之后   发现 AFHTTPRequestOperationManager  这个类没有了  ,百度之后  发现 原来 ...

  5. 深入理解Javascript之this关键字

    深入理解Javascript之this关键字 作者: Laruence(   ) 本文地址: http://www.laruence.com/2009/09/08/1076.html 转载请注明出处 ...

  6. 使用Eclipse提供的Axis1.x生成WSDL文件以及Server和Client代码

    使用Eclipse自带的Axis 1.x来创建一个web service应用的服务端和客户端 Axis 是SOAP WebService协议实现,SOAP实质上是一个基于HTTP POST的请求,以X ...

  7. linux命令之端口占用

    1.lsof命令 eg: lsof -i:8080,这里显示8080端口在被java使用,状态是LISTEN, 可以使用killall 进程名(killall java) 结束占用端口的进程(不建议, ...

  8. Flask,HelloWorld

    Flask,HelloWorld # -*- coding:utf-8 -*- ''' Created on 2015年10月19日 ''' from flask import Flask app = ...

  9. HDU 2501 Tiling_easy version(简单递推)

    Tiling_easy version Problem Description 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有 ...

  10. 彻底理解Gradle的任务

    这是从我个人博客中复制过来的,没有重新进行排版,为了更好的阅读效果大家可以去我网站上阅读,地址:http://coolshell.info/blog/2015/07/gradle-tasks-guid ...