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. 【英语】Bingo口语笔记(75) - 元音辅音的辨读

  2. aspose.words复制插入同一word文档中的某个页面

    选择word模板 Document doc = new Document(Server.MapPath("~\\templet") + "\\" + name. ...

  3. 选择符优先级-----:link伪类

    问题:请指出以下结构中,A标签内的字体颜色. <style> a{ color:#ccc}/* 灰色 */ .alink a{color:#F60}/* 橙色 */ h1 a{color: ...

  4. TCP握手

    1.TCP的三次握手四次挥手 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认. 第二 ...

  5. java中正则表达式的应用

    java.util.regex   Pattern的应用 public static void main(String[] args) { //简单的正则匹配.从给定的字符串中匹配正则表达式 //匹配 ...

  6. is_file和file_exists效率比较

    目前在弄文件缓存的时候用到了判定文件存在与否,is_file()还是file_exists()呢?is_file和file_exists两者效率比较起来,谁的运行速度更快呢?还是做个测试吧: 1 2 ...

  7. Windows服务调用Quartz.net 实现消息调度

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...

  8. CMake实践(4)

    一,本期目标: [sun@localhost t4]$ cat README 任务:如何使用外部共享库和文件 二,目录结构 [sun@localhost t4]$ tree ../t4../t4├── ...

  9. Excel的最大行数

    使用Excel2007或Excel2010,在“另存为” 菜单中可以选择为“Excel 07-2003 工作薄”,从中我们可以看出,到了2007版以后,存储格式变了,简单一点从扩展名便可以看出,一个是 ...

  10. Android 应用启动速度优化

    现在很多的应用一开始点击的时候总会出现黑屏或者白屏,甚至前段时间微信也有同样的问题.其实白屏或者黑屏还是一些其他的东西,都是因为Android 主题的问题,只要自己自定义一个启动主题,问题完美解决. ...