startActivityForResult()

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

  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自动执行的

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
Toast.makeText(MainActivity.this,
"这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show(); break;
case 2:
Toast.makeText(MainActivity.this,
"这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show(); break; } }

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

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

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

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

4.主要的方法介绍完以后就介绍下源代码:
MainActivity:
 public class MainActivity extends Activity implements OnClickListener {

     private Button btn1;
private Button btn2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(this);
btn2 = (Button) findViewById(R.id.btn2);
btn2.setOnClickListener(this);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
Intent intent1 = new Intent();
intent1.setClass(MainActivity.this, OneActivity.class);
MainActivity.this.startActivityForResult(intent1, 1);
break;
case R.id.btn2:
Intent intent2 = new Intent();
intent2.setClass(MainActivity.this, TwoActivity.class);
MainActivity.this.startActivityForResult(intent2, 2); break; } } @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
Toast.makeText(MainActivity.this,
"这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show(); break;
case 2:
Toast.makeText(MainActivity.this,
"这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show(); break; } } }

MainActivity.java


  OneActivity:

 public class OneActivity extends Activity {

     private EditText edit;
private Button submit; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
edit = (EditText) findViewById(R.id.editOne);
submit = (Button) findViewById(R.id.btnSubmitOne);
submit.setOnClickListener(new Button.OnClickListener() { @Override
public void onClick(View v) { Intent intent1 = new Intent();
intent1.putExtra("text", edit.getText().toString().trim());
OneActivity.this.setResult(1, intent1); OneActivity.this.finish();
}
}); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.one, menu);
return true;
} }

OneActivity.java

  TwoActivity:

 private EditText edit;
private Button submit; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
edit = (EditText) findViewById(R.id.editTwo);
submit = (Button) findViewById(R.id.btnSubmitTwo);
submit.setOnClickListener(new Button.OnClickListener() { @Override
public void onClick(View v) {
Intent intent1 = new Intent();
intent1.putExtra("text", edit.getText().toString().trim());
TwoActivity.this.setResult(2, intent1);
TwoActivity.this.finish();
}
}); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.two, menu);
return true;
} }

TwoActivity.java

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

源码下载:源码

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

  1. Android:通过startActivityForResult方法来得到Activity的回传值

    在一些情况下,我们通过 A activity跳转到 B activity上,这时希望 A activtiy能从 B activity上得到一些返回值,这个时候我们就不能使用startActivity方 ...

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

    1.两种实现activity跳转的方法 实现activity的跳转主要有两种方法,startActivity()和startActivityForResult();例如activity A跳转到act ...

  3. intent的startActivityForResult()方法

      /******************************************************************************************** * au ...

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

    Intent: 该功能可以用于通过intent来跳转界面时候传递信号给原理的页面,以便做出一些处理: sqlite的使用: 该方法得到的sqlitedatabase可读可写,而getreadabled ...

  5. 浅谈Android中的startActivityForResult和setResult方法

    引言 我们知道,如果想打开一个新的Activity我们可以使用startActivity方法.今天我们介绍的startActivityForResult不仅可以打开全新的Activity,而且当新的A ...

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

    Intent应该算是Android中特有的东西.你能够在Intent中指定程序要运行的动作(比方:view,edit,dial),以及程序运行到该动作时所须要的资料.都指定好后,仅仅要调用startA ...

  7. android intent打开各种文件的方法

    android intent打开各种文件的方法   1./**  * 检测是否安装了某个软件  *   * @param pkgName "com.bill99.kuaishua" ...

  8. android Intent介绍

    Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 ...

  9. Android Intent Flags

    Intent,顾名思义,即意图,通常用它来启动一个应用程序组件( Activity, Service, 或者 BroadCast Receiver ).在启动一个新的 Activity 时,可以通过给 ...

随机推荐

  1. maven整合s2sh截图

  2. 摘录:官方文档对ROWID虚拟行的定义

    ROWID Pseudocolumn For each row in the database, the ROWID pseudocolumn returns the address of the r ...

  3. 【转】Ubuntu搭建Eclipse+JDK+SDK的Android

    原文网址:http://blog.csdn.net/ithomer/article/details/6960989 今晚重装Ubuntu系统,重新安装了一套eclipse+jdk+SDK的Androi ...

  4. Android 适配多种ROM的快捷方式

    快捷方式 应该来说 很多人都做过,我们就来看一下基本的快捷方式 是怎么实现的,会有什么问题? 首先 肯定要获取权限: <!-- 添加快捷方式 --> <uses-permission ...

  5. rsync同步时报“auth failed on module”错误的可能原因

    关于这个auth失败的问题,有以下可能的情况:   1.密码输入错误: 请再次确认你登录用户的密码无误   2.secrets file格式错误: secrets file的文件格式是  upload ...

  6. redo和undo的区别

    转摘:http://blog.163.com/jing_playboy/blog/static/757362222012520104521864/   redo--> undo-->dat ...

  7. php 处理透明背景的图片时的问题

    PHP图象处理之透明背景的gif和png图片的一些问题 1,直接读取有透明背景的PNG格式文件,然后直接输出,背景变成了黑色,gif则没有这种情况.   解决方法:使用 imagesavealpha ...

  8. 嵌入式 hi3518平台获取网络环境中的ip、netmask、broadcast等信息

    <span style="font-family:Courier New;"> /********************************** (C) COPY ...

  9. [转]linux系统磁盘分区之parted

    转自:http://blog.csdn.net/h249059945/article/details/12668793 对于linux的分区通常可以使用fdisk命令工具和parted工具对于分区表通 ...

  10. Selenium RC配置

    Selenium  RC: -----作者: 虫师 ========================================================================== ...