在一个Activity中通过意图启动另一个Activity,并且希望被启动的Activity回传结果过去,这时候就需要startActivityForResult(intent)来调用Activity, 并且重写onActivityResult()方法,它会被回调,做接收结果的一些操作。
下面通过一个实例来演示如何使用:
工程结构:
运行结果:
MainActivity结果截图:
打开的OtherActivity截图:
输入需要回传的内容:
返回结果截图:
下面是源代码:
MainActivity.java
package com.intent.activity;
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 implements OnClickListener{
private Button btn;
private TextView backText;
private static final int REQUESTCODE = 1; //返回的结果码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
backText = (TextView)findViewById(R.id.backText);
btn = (Button)findViewById(R.id.btOpenOtherActivity);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//定义一个意图
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
//启动意图
startActivityForResult(intent, REQUESTCODE);
}
//activity的回调函数
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==2){
if(requestCode==REQUESTCODE){
String message = data.getStringExtra("message");
backText.setText("回传过来的值:"+message);
}
}
}
}
OtherActivity.java
package com.intent.activity;
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 implements OnClickListener{
private EditText editText;
private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
editText = (EditText) findViewById(R.id.editText);
btn = (Button)findViewById(R.id.btnSendBack);
btn.setOnClickListener(this);
//获取Intent传递的Bundle对象和它里面的数据
Bundle data = getIntent().getExtras();
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
String text = editText.getText().toString();
intent.putExtra("message", text);
//通过Intent对象返回结果,setResult方法
setResult(2,intent);
finish();//结束当前Acitvity
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="这是:MainActivity" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btOpenOtherActivity"
android:text="使用意图打开OtherActivity并返回结果"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/backText" />
</LinearLayout>
other.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入回传的内容"
android:id="@+id/editText"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回结果"
android:id="@+id/btnSendBack"/>
</LinearLayout>
分享到:
相关推荐
这是一个ppt文档,在里面详细的帮我们介绍了在Activity之间传递数据,通过全局变量传递数据。
android使用意图传递数据ppt和源码
Android学习笔记(十二)——使用意图传递数据的几种方式 完整代码
Android用Bundle传递数据并返回结果 ,交字符串转为大写字母
在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何...
Android OpenGL入门示例:绘制三角形和正方形,详见博文: http://blog.csdn.net/yanzi1225627/article/details/30096181
Android高薪之路:Android程序员面试宝典
Android播放视频的方式有三种: 一、使用意图播放,调用本地安装的播放器,选择一个进行播放。 二、使用VideoView播放(VideoView其实是对MediaPlayer的封装,使用起来很简单,但是缺少灵活性)。 三、使用...
JavaScript调用Android方法,向Android方法传递json数据。
利用Intent意图之数据的传递开发技术,实现了一个根据人体的身高,计算出标准体重,并且判断是否超重。
不管你是想将已经存在的原生代码应用移植到Android平台上还是准备开始在Android平台上进行软件开发,使用《Android C++高级编程——使用NDK》一书提供的技术可以构建更出色的应用。本书将展示构建性能更好的复杂原生...
我们可以通过Intent类中的putExtra方法可以将简单的数据类型和序列化对象保存到Intent对象中,然后在目标的Activity中使用getXxx方法取出对应的数据。
Android入门介绍视频,1.1 android系统介绍,1.2 android系统框架的介绍,1.3 如何搭建android开发环境,1.4 android生命周期的介绍,1.5 android使用全局变量传递数据,1.6 android使用剪切板传递数据,1.7 意图传递数据...
短信验证码的功能,在很多应用中都能用到,我写了一个例子,是接的聚合数据的短信验证码
主要内容:● 使用JNI将原生代码连接到Java中● 使用SWIG自动生成JNI代码● 使用POSIX线程实现多线程应用● 使用POSIX套接字实现网络应用● 使用logging、GDB和Eclipse调试器进行调试● 使用Valgrind分析内存● 使用...
《Android从入门到精通》 第1章 初识Android 1.1 什么是Android 1.1.1 移动信息设备分类 1.1.2 Open Handset Alliance和 Android 1.2 Android简介 1.2.1 Andriod的历史 1.2.2 Andriod的未来 1.2.3 Andriod平台的技术...
1. 例子代码有两部分:androidJson是andoird的工程,inxdex.php是php服务器json数据产生部分代码。 2. 服务器端提供http(get)获取方式获取json数据的api例子,是用php写的。 4. android的apk给你说完成http数据...
Android使用意图传递数据PPT与源码.zip
这里简单描述了以下Activity使用Bundle向Fragment传递数据
android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看>http://blog.csdn.net/js931178805/article/details/8268144