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. java线程join的意思(转自http://zjj1211.blog_51cto_com)

    Join,单词本事就是连接的意思. 先贴出几段代码猜猜结果. <1> public static int Main() { Alpha oAlpha = new Alpha(); Thre ...

  2. 基于核方法的模糊C均值聚类

    摘要: 本文主要针对于FCM算法在很大程度上局限于处理球星星团数据的不足,引入了核方法对算法进行优化.  与许多聚类算法一样,FCM选择欧氏距离作为样本点与相应聚类中心之间的非相似性指标,致使算法趋向 ...

  3. 【英语】Bingo口语笔记(78) - let系列

  4. postgresql pg_hba.conf

    pg_hba.conf是客户端认证配置文件 METHOD指定如何处理客户端的认证.常用的有ident,md5,password,trust,reject. PostgreSQL默认只监听本地端口,用n ...

  5. HDFS命令行文件操作

    Hadoop文件操作命令形式为 hadoop fs -cmd <args> 说明:cmd是具体的文件操作命令,<args>是一组数目可变的参数. Hadoop最常用的文件操作命 ...

  6. Android WebView中那些不得不解决的坑~~

    前面那张hybrid开发心得 有人问 怎么解决不用onJsPrompt 来回调js函数的问题.其实很简单,就是在在你的jscalljava回调函数内 另外开个线程去load js代码即可: wb.po ...

  7. Phonegap中用ajax读取PHP服务器的数据

    直接上代码: HTML: var URL="网站地址&callback=?"; $.ajax({ type : 'GET', url : URL, dataType : ' ...

  8. js四舍五入

    7-13 向上取整ceil() 7-14 向下取整floor() 7-15 四舍五入round() 7-16 随机数 random()

  9. poj 3254(状态压缩基础题)

    题意:就是你给一个n行m列的矩阵,矩阵里的元素由0和1组成,1代表肥沃的土地可以种植作物,0则不可以种植作物,并且相邻的土地不能同时种植作物,问你有多少种种植方案. 分析:这是我做的第一道状态压缩dp ...

  10. Delphi 注册文件类型 设置文件图标

        {------------------------------------------------------------------------------- @过程名: slpert -& ...