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

Android中的startActivityForResult启动活动并取得返回数据的使用

2016-07-30 13:00 656 查看
1.首先创建一个项目名为:CreateActivity

2.创建一个包名为:com.example.sc.createacitivity

3.创建两个活动分别为:FirstActivity    SecondActivity

4.创建活动所对应的布局文件:first_activity   second_activity  并且在布局文件中添加一个按钮,两个布局文件基本类似

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button1"
/>
</LinearLayout>


5.在FirstActivity按钮的单击事件中代码如下:

@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,REQUEST_CODE);
}

注意这里启动活动用的是:startActivityForResult

定义两个常量:

public final int REQUEST_CODE=1;
public final int RESPONE_CODE=2;

6.在FirstActivity中重写父类的onActivityResult事件

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode)
{
case REQUEST_CODE:
{
if( resultCode == RESPONE_CODE ){
String strValue = data.getStringExtra("ret_value");
Toast.makeText(this,strValue, Toast.LENGTH_SHORT).show();
}
break;
}
}
}

7.在SecondActivity按钮的点击事件代码:

@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("ret_value","SecondActivity");
setResult(RESPONE_CODE,intent);
finish();
}

注意这里在活动销毁前通过setResult来返回数据

最后调用finish来销毁活动。

8.假设我们不按SecondActivity的按钮,而是按一下Back键怎么办?

那么我们就在SecondActivity中重写父类的onBackPressed事件就好啦

@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("ret_value","SecondActivity");
setResult(RESPONE_CODE,intent);
finish();
}

这样就不用怕按Back键了。

效果图就不上传了,因为比较简单...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android