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

Android学习笔记之Activity Intent 数据传输之回传结果

2015-10-28 21:37 495 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/xianxiongliu/article/details/49474811

在Android开发中,有时会遇到这样的需求,在当前Activity关闭时,要把该Activity中编辑的数据回传个上前一个启动它的父Activity。

在这种机制下,父Activity使用startActivityForResult方法来启动子Activity,并且复写父Activity中的onActivityResult方法来接受字activity传输回来的结果。在子activity中,把需要回传的数据绑定到Intent对象中,通过setResult方法来回传数据。

下面,通过代码的方式来掩饰这一流程。首先介绍代码要实现的逻辑功能。MainActivity(父activity)中只有两个控件:TextView,用来显示回传的结果;Button,作用是启动子activity。OtherActivity中也是两个空间:EditText,用来编辑文字;Button,关闭Activity并将结果返回给MainActivity。操作流程:启动Demo进入MainActivity,点击按钮启动另子Activity,在子Activity中编辑文字,并按下按钮关闭该activity,将结果显示在MainActivity 的TextView上。代码如下:

1、MainActivity 的布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/txt_showmsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示返回的结果" />

<Button
android:id="@+id/btn_jump"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="跳转到另一个activity" />

</LinearLayout>
2、MainActivity
package com.example.Activity_ForResult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

<span style="white-space:pre">	</span>private TextView textView = null;   //显示结果
private Button btn = null;			//启动activity
private final static int REQUSET_CODE = 0x11;    //请求码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textView = (TextView) findViewById(R.id.txt_showmsg);
btn = (Button) findViewById(R.id.btn_jump);
// 启动另一个activity
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
// 通过这个方法启动activity才会有返回值
startActivityForResult(intent, REQUSET_CODE);
}
});
}

/**
* @author 仙仙是个胖子
* @param requestCode 请求码 和startActivityForResult方法中的 requestCode匹配
* @param resultCode 结果码,和子activity中的setResult中的resultCode匹配
* @param data 回传的数据结果
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUSET_CODE && resultCode == OtherActivity.RESULT_CODE){
// 抽出数据
String str = data.getStringExtra("msg");
// 显示回传的数据
textView.setText(str);
}
}

}

3、 子Activity的布局文件activity_other.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<EditText
android:id="@+id/edt_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
</EditText>

<Button
android:layout_gravity="center"
android:id="@+id/btn_sendBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回给上个activity" />

</LinearLayout>

4、子Activity的代码
package com.example.Activity_ForResult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class OtherActivity extends Activity {

private EditText editText = null;
private Button button = null;
public static final int RESULT_CODE = 0x12;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);

editText = (EditText) findViewById(R.id.edt_msg);

button = (Button) findViewById(R.id.btn_sendBack);
// 关闭activity并回传数据
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 获取编辑的数据
String str =  editText.getText().toString();
// 数据绑定
Intent intent = new Intent();
intent.putExtra("msg", str);
// 设置回传结果
OtherActivity.this.setResult(RESULT_CODE, intent);
// 关闭activity并回传
OtherActivity.this.finish();
}
});
}

}








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐