[Android]获取Activity返回参数
2015-12-24 15:43
381 查看
在Activity之间传递参数的时候,我们更多的是使用Intent进行传参,当然,其中intent传送各种基本数据类型与对象(包括Bundle、String或自己创建的对象),但是,更多的是我们只会传送参数给下一个Activity,却不懂如何获取所跳转的Activity返回的参数。(会的大神可以绕路了。。。)
首先,我先写个demo,大致效果是有两个Activity,都具有一个按钮和一个输入框,要做的是点击第一个ActivityA将跳转到下个ActivityB,并将输入框的数据传输到ActivityB,在ActivityB中的输入框显示出来,点击ActivityB的按钮的时候,将回到ActivityA,并且将ActivityB中的输入框的数据返回给ActivityA,同时在ActivityA的输入框显示所传输的数据。
说了这么多,看着都觉得绕了,还是来看看具体实现吧。
第一个ActivityA的页面:activity_main.xml
第二个ActivityB的页面:activity_the.xml
页面就这么多了,比较简单就不解说了。
ActivityA按钮跳转代码:
需要注意的是页面跳转不是使用 startActivity(intent); 而是使用 startActivityForResult(intent, 0);至于第二个参数requestCode的用处先不要管,待会有说明。
同时,ActivityA还需要实现这个方法onActivityResult:
resultCode是为了识别是从哪个Activity中传参回来,具体可以看ActivityA中的onActivityResult方法,当ActivityB传参回来的时候,将回执行该方法,其中第一个和第二个参数如上所述,而第三个参数intent则包含了ActivityB所传回的数据,这时,你想怎么处理数据都ok了
源码地址:
http://download.csdn.net/detail/u011596810/9375562
首先,我先写个demo,大致效果是有两个Activity,都具有一个按钮和一个输入框,要做的是点击第一个ActivityA将跳转到下个ActivityB,并将输入框的数据传输到ActivityB,在ActivityB中的输入框显示出来,点击ActivityB的按钮的时候,将回到ActivityA,并且将ActivityB中的输入框的数据返回给ActivityA,同时在ActivityA的输入框显示所传输的数据。
说了这么多,看着都觉得绕了,还是来看看具体实现吧。
第一个ActivityA的页面:activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btnStartActivity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="启动另外一个Activity" android:layout_centerHorizontal="true" /> <EditText android:id="@+id/edit1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/btnStartActivity" /> </RelativeLayout>
第二个ActivityB的页面:activity_the.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" tools:context="com.xiaoyan.xiejinxiong.sendargs.TheActivity"> <EditText android:layout_width="wrap_content" android:id="@+id/edit2" android:layout_height="wrap_content" /> <Button android:id="@+id/btnback" android:layout_width="wrap_content" android:text="返回到上个页面" android:layout_height="wrap_content" /> </LinearLayout>
页面就这么多了,比较简单就不解说了。
ActivityA按钮跳转代码:
//初始化按钮并监听按钮 findViewById(R.id.btnStartActivity).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, TheActivity.class); intent.putExtra("data",editText.getText().toString()); startActivityForResult(intent, 0); } });
需要注意的是页面跳转不是使用 startActivity(intent); 而是使用 startActivityForResult(intent, 0);至于第二个参数requestCode的用处先不要管,待会有说明。
同时,ActivityA还需要实现这个方法onActivityResult:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); editText.setText(data.getStringExtra("data2")); }ActivityB按钮监听代码:
//初始化按钮并监听按钮 findViewById(R.id.btnback).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("data2",editText.getText().toString()); setResult(1, intent); TheActivity.this.finish(); } });同时,需要注意,当销毁ActivityB之前,首先将需要传参的参数存储在Intent中,然后执行 setResult(1, intent);方法,在这个方法中,第一个参数为resultCode,这与startActivityForResult(intent, 0);中的requestCode的用处差不多,requestCode是为了识别是哪个Activity跳转出去,而
resultCode是为了识别是从哪个Activity中传参回来,具体可以看ActivityA中的onActivityResult方法,当ActivityB传参回来的时候,将回执行该方法,其中第一个和第二个参数如上所述,而第三个参数intent则包含了ActivityB所传回的数据,这时,你想怎么处理数据都ok了
源码地址:
http://download.csdn.net/detail/u011596810/9375562
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories