Android学习笔记之Activity Intent 数据传输之回传结果
2015-10-28 21:37
495 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xianxiongliu/article/details/49474811
3、 子Activity的布局文件activity_other.xml
4、子Activity的代码
在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(); } }); } }
相关文章推荐
- android学习笔记---1.为应用添加新的Activity,中使用Intent(意图),结果码,请求码,得到新打开Activity 关闭后返回的数据,Bundle类的作用
- android学习笔记---1.为应用添加新的Activity,中使用Intent(意图),结果码,请求码,得到新打开Activity 关闭后返回的数据,Bundle类的作用
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android学习笔记(一)activity的基本用法和创建,bundle如何传递数据,intent的用法
- Android两个Activity传递数据,onActivityResult获取结果时Intent为空问题
- 启动另一个Activity并利用Intent传输数据
- 以Intent 启动Activity,传输数据
- Android在 普通类(非Activity,多数为Adapter) 中 传输数据为空值 解决方法 :在startActivity 用 intent传输数据
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- 关于Bundle和Intent在两个activity之间传输数据的问题
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- 两个Activity利用Intent传输数据
- Activity数据传输--Intent显示、隐式、不同应用之间启动
- android的intent大数据传输的案例
- Android学习笔记(九)—— 调用另外一个Activity — Intent对象的使用
- 深入Android【八】 —— Activity间数据传输
- Android中activity到fragment的数据传输
- Activity之间使用intent传递大量数据带来问题总结
- 使用Intent在Activity与Fragment之间传递数据中存在的返回键错乱问题