您的位置:首页 > 移动开发 > Android开发

[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

<?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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android activity intent