在实际的应用中,我们不仅仅要向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. job还是job

    declare jobno binary_integer;rm_days number;rm_hour number;  --传入的hourmy_hour number;    --取出当前时间的ho ...

  2. Eclipse 和 Intellij idea 快捷键的区别

    描述 Eclipse IntelliJ 代码补全 Ctrl+space ctrl+space 打开类或者接口 (两个IDE都支持使用“驼峰字符”前缀的方式来过滤查找列表,进而轻松完成搜索:比如:可以使 ...

  3. Flash Professional CS6 安装zxp插件

    说明 头两天因工作原因需要使用DragonBones,他的工作方式是的Flash Professional CS5.5以上的环境. DragonBones提供的是一个文件名为:xzp的文件,在Wind ...

  4. (转载)与OpenDialog相关的一个问题

    OpenDialog的一个问题 有一个功能要求就是[每次打开文件的对话框的默认路径是上一次保存文件的路径],本来这个就是设置OpenDialog控件的InitialDir属性就行了,但是第一次打开的时 ...

  5. jdk .tar.gz 包安装 inAction

    方法参考于http://blog.sina.com.cn/s/blog_81631744010137iy.html, 多谢博主分享,此处仅作为个人学习笔记. 首先将*.tar.gz解压 tar -xz ...

  6. vs2010 未能正确加载方案中的一个或多个项目

    Visual studio在打开解决方案时,往往会碰到一个这样的错误,提示说:未能正确加载方案中的一个或多个项目: 我们可以通过以下步骤来解决该问题:首先,在相应的sln类型文件上点击右键,选择用记事 ...

  7. App在后台运行

    App有三种状态: 1. 死亡状态(未打开App); 2. 前台运行状态(打开状态); 3. 后台暂停状态(停止所有动画, 定时器, 多媒体联网等操作) 4. 后台运行状态(后台运行); ------ ...

  8. jquery点击图片选中特效

    jquery点击图片选中特效 点击在线预览效果

  9. css3加载中

    .loader { margin: 6em auto; font-size: 10px; position: relative; text-indent: -9999em; border-top: 1 ...

  10. [BZOJ 3531] [Sdoi2014] 旅行 【离线+LCT】

    题目链接:BZOJ - 3531 题目分析 题目询问一条路径上的信息时,每次询问有某种特定的文化的点. 每个点的文化就相当于一种颜色,每次询问一条路径上某种颜色的点的信息. 可以使用离线算法, 类似于 ...