android Intent的startActivityForResult()方法

startActivityForResult()

  之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.Activity跳转到B.Activity,在A.Activity中要自动获取到B.Activity返回的数据。

  1.介绍几个主要的方法:

1 MainActivity.this.startActivityForResult(intent1, 1);

第一个参数intent1就不介绍了,第二个参数的值必须要大于等于0,你可以自己设定数值,该值是用来标记你要跳转并返回值的Activity。比如这里我设定的是以就是说明A.Activity跳转到B.Activity的标记为1,若A.Activity跳转到C.Activity

那就不能再设定为1了,可以写除了1意外的所有正整数。

  2.onActivityResult(int
requestCode, int
resultCode, Intent data)    
这个方法是返回主activity自动执行的


 1 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
2 super.onActivityResult(requestCode, resultCode, data);
3 switch (requestCode) {
4 case 1:
5 Toast.makeText(MainActivity.this,
6 "这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
7 Toast.LENGTH_LONG).show();
8
9 break;
10 case 2:
11 Toast.makeText(MainActivity.this,
12 "这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
13 Toast.LENGTH_LONG).show();
14
15 break;
16
17 }
18
19 }

这个方法就是用来处理从哪张Activity返回的,并处理返回来数据。

requestCode:就是之前在主界面的.startActivityForResult的第二个参数值,通过判断requestCode就可以知道是哪张页面返回回来的
resultCode: 根据它来判断返回页面所需要的不同操作
Intent : 就是从子页面返回回来的Intent
3.setResult(resultCode, data)

1 setResult(1, intent1)

 这里的1就对应到onActivityResult()方法中的resultCode

 intent1 对应onActivityResult()方法中的data, 也就是要返回主Activity所需要处理的Intent

4.主要的方法介绍完以后就介绍下源代码:
MainActivity:

 1 public class MainActivity extends Activity implements OnClickListener {
2
3 private Button btn1;
4 private Button btn2;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.activity_main);
10 btn1 = (Button) findViewById(R.id.btn1);
11 btn1.setOnClickListener(this);
12 btn2 = (Button) findViewById(R.id.btn2);
13 btn2.setOnClickListener(this);
14 }
15
16 @Override
17 public boolean onCreateOptionsMenu(Menu menu) {
18 getMenuInflater().inflate(R.menu.main, menu);
19 return true;
20 }
21
22 @Override
23 public void onClick(View v) {
24 switch (v.getId()) {
25 case R.id.btn1:
26 Intent intent1 = new Intent();
27 intent1.setClass(MainActivity.this, OneActivity.class);
28 MainActivity.this.startActivityForResult(intent1, 1);
29 break;
30 case R.id.btn2:
31 Intent intent2 = new Intent();
32 intent2.setClass(MainActivity.this, TwoActivity.class);
33 MainActivity.this.startActivityForResult(intent2, 2);
34
35 break;
36
37 }
38
39 }
40
41 @Override
42 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
43 super.onActivityResult(requestCode, resultCode, data);
44 switch (requestCode) {
45 case 1:
46 Toast.makeText(MainActivity.this,
47 "这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
48 Toast.LENGTH_LONG).show();
49
50 break;
51 case 2:
52 Toast.makeText(MainActivity.this,
53 "这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
54 Toast.LENGTH_LONG).show();
55
56 break;
57
58 }
59
60 }
61
62 }

MainActivity.java

  OneActivity:

 1 public class OneActivity extends Activity {
2
3 private EditText edit;
4 private Button submit;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.activity_one);
10 edit = (EditText) findViewById(R.id.editOne);
11 submit = (Button) findViewById(R.id.btnSubmitOne);
12 submit.setOnClickListener(new Button.OnClickListener() {
13
14 @Override
15 public void onClick(View v) {
16
17 Intent intent1 = new Intent();
18 intent1.putExtra("text", edit.getText().toString().trim());
19 OneActivity.this.setResult(1, intent1);
20
21 OneActivity.this.finish();
22 }
23 });
24
25 }
26
27 @Override
28 public boolean onCreateOptionsMenu(Menu menu) {
29 getMenuInflater().inflate(R.menu.one, menu);
30 return true;
31 }
32
33 }

OneActivity.java

  TwoActivity:

 1 private EditText edit;
2 private Button submit;
3
4 @Override
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.activity_two);
8 edit = (EditText) findViewById(R.id.editTwo);
9 submit = (Button) findViewById(R.id.btnSubmitTwo);
10 submit.setOnClickListener(new Button.OnClickListener() {
11
12 @Override
13 public void onClick(View v) {
14 Intent intent1 = new Intent();
15 intent1.putExtra("text", edit.getText().toString().trim());
16 TwoActivity.this.setResult(2, intent1);
17 TwoActivity.this.finish();
18 }
19 });
20
21 }
22
23 @Override
24 public boolean onCreateOptionsMenu(Menu menu) {
25 // Inflate the menu; this adds items to the action bar if it is present.
26 getMenuInflater().inflate(R.menu.two, menu);
27 return true;
28 }
29
30 }

TwoActivity.java

  对应的XML文件就不贴出来了,子页面就一个EditText 和 Button

源码下载:源码

android Intent的startActivityForResult()方法,布布扣,bubuko.com

时间: 2024-08-08 09:42:11

android Intent的startActivityForResult()方法的相关文章

从零开始学android开发-详细谈谈intent的startActivityForResult()方法

1.两种实现activity跳转的方法 实现activity的跳转主要有两种方法,startActivity()和startActivityForResult();例如activity A跳转到activity B 对于,第一种,是把activity A的数据,通过intent传送到activity B,但是不能返回数据. 关于第一种,可以参考我之前的这篇博文http://blog.csdn.net/conowen/article/details/7270393 2.第二种方法startActi

intent的startActivityForResult()方法

/******************************************************************************************** * author:[email protected]大钟                                                                                                                           * E-m

Sqlite操作的一些关键类的官方说明与Intent的startactivityforresult方法

Intent: 该功能可以用于通过intent来跳转界面时候传递信号给原理的页面,以便做出一些处理: sqlite的使用: 该方法得到的sqlitedatabase可读可写,而getreadabledatabase是只读的: 继承sqliteopenhelper必须要实现的方法之一:sqliteopenhelper是一个抽象类,抽象类的抽象方法必须实现或者继续创建为抽象类继承该抽象类却不用实现具体的父类的抽象方法,接口默认都是抽象类与抽象方法. Baseadapter的使用说明: 所以一般的操作

Android Intent的几种使用方法全面总结

Intent应该算是Android中特有的东西.你能够在Intent中指定程序要运行的动作(比方:view,edit,dial),以及程序运行到该动作时所须要的资料.都指定好后,仅仅要调用startActivity(),Android系统会自己主动寻找最符合你指定要求的应用程序,并运行该程序. 以下列出几种Intent的使用方法 显示网页: Uri uri = Uri.parse("http://www.google.com"); Intent it = new Intent(Inte

android intent打开各种文件的方法

android intent打开各种文件的方法 1./**  * 检测是否安装了某个软件  *   * @param pkgName "com.bill99.kuaishua"  * @param mContext  * @return  */ public static boolean isPkgInstalled(String pkgName, Activity mContext) {  PackageInfo packageInfo = null;  try {   packag

Android Intent简介

Intent对象主要用来在Android程序的Activity,Service和BroadcastReceiver这3大组件之间传输数据, 而针对这3大组件,有独立的Intent传输机制,分别如下:1.Activity:通过将一个Intent对象传递给Context.startActivity()或Activity.startActivityForResult(), 启动一个活动或者使用一个已经存在的活动去做新的事情.2.Service:通过将一个Intent对象传递给Content.start

[Android] Intent详解

[转]http://www.cnblogs.com/engine1984/p/4146621.html [正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互.Intent这

Android Intent 教程

原文:Android: Intents Tutorial 作者:Darryl Bayliss 译者:kmyhy 人不会漫无目的地瞎逛,他们所做的大部分事情--比如看电视.购物.编写下一个杀手级 app -- 都带有特定的目的或者意图,即 intent. Android 也是同样的.在一个 app 干某件事情之前,它需要知道这件事情的目的或 intent,才能正确地完成整件事情. 这说明人和 Android 并无不同. 在本文,你将利用 Intent 去创建一个模因软件(一种用于恶搞的图片制作软件

android Intent机制详解

什么是Intent Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求.比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,