作用:当aAty跳转之bAty时,需要bAty回传数据,使用startActivityForResult。

相关的函数:

aAty:--跳转至bAty(intent可以传递数据)

void android.app.Activity.startActivityForResult(Intent intent, int requestCode)

bAty:

void android.app.Activity.setResult(int resultCode, Intent data)

aAty:

void android.app.Activity.startActivityForResult(Intent intent, int requestCode)

代码:

aAty:

public class MainActivity extends Activity implements OnClickListener {
private Button bt_jumpAnotherAty; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_jumpAnotherAty = (Button) findViewById(R.id.bt_jumpAnotherAty);
bt_jumpAnotherAty.setOnClickListener(this);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case RESULT_OK:
String result = data.getStringExtra("result");
Log.d("h_bl", result);
break; default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_jumpAnotherAty:
Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
startActivityForResult(intent, 0);
break; default:
break;
}
} }

bAty:

public class AnotherActivity extends Activity implements OnClickListener {
private Button bt_setResult; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
bt_setResult = (Button) findViewById(R.id.bt_setResult);
bt_setResult.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_setResult:
// 数据是使用Intent返回
Intent intent = new Intent();
// 把返回数据存入Intent
intent.putExtra("result", "My name is h_bolin");
// 设置返回数据
AnotherActivity.this.setResult(RESULT_OK, intent);
// 结束该Aty,这点很重要。
AnotherActivity.this.finish();
break; default:
break;
}
} }

详解:bAty被销毁时 -- finish(),会返回数据。

PS.

1.一般不会在bAty的onCreate()方法写setResult()方法,需要在调用的时候,才会调用。

2.按Back键,Android会自动调用Aty的finish()方法。

3.可以重写onBackPressed()方法,对Back键的事件处理。

String result = data.getStringExtra("reslt");

4.取值时,要name要写对,不然会报以下错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.example.startactivityforresultdemo/com.example.startactivityforresultdemo.MainActivity}: java.lang.NullPointerException: println needs a message

startActivityForResult() 中requestCode 和 resultCode 的作用:

使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。

详见:

http://blog.csdn.net/donglynn/article/details/22693835

Android之startActivityForResult的更多相关文章

  1. Android之startActivityForResult的使用

    在Android中startActivityForResult主要作用就是: A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A ...

  2. Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回

    一.使用场景 在一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Ac ...

  3. Android使用 startActivityForResult 、 onActivityResult 时的注意事项

    今天使用 startActivityForResult 时遇到两个问题,应该是常见问题了吧,浪费了些时间才搞定,做个记录. 1. onActivityResult 的触发顺序问题 这个问题很郁闷,我一 ...

  4. Android的startActivityForResult不起作用

    之前startActivityForResult一直用的好好的,今天发现怎么也不起作用.检查后发现有两点影响了. 1.android:launchMode="singleTask" ...

  5. 【转】android的startActivityForResult学习心得

    http://blog.csdn.net/yanzi1225627/article/details/7800529 从昨晚到现在终于调试通了一个startActivityForResult的例子,网上 ...

  6. Android Fragment StartActivityForresult调用实例

    fragment里面的onActivityResult 怎样才能被调用,很简单,就一句话, startActivityForResult(intent, getActivity().RESULT_FI ...

  7. 简化Android的startActivityForResult调用

    一个是解决在onActivityResult 中判断requestCode的问题,第二个是让调用代码的地方就知道我是如何处理对方activity 的返回的. 首先我们有一个ResultActivity ...

  8. android 加载自定义图片并在图片上绘图

    来源:毕设 关键词:Bitmap Canvas //毕设中需要自定义室内地图,并且在地图上绘制轨迹 //此处是一个测试Demo,实现图片的加载和记录手指在屏幕上的运动轨迹 图片的载入 使用系统提供的内 ...

  9. 打开Android系统安装APK的页面

    //使用隐式意图开启安装APK的Activity Intent intent = new Intent("android.intent.action.VIEW"); intent. ...

随机推荐

  1. Java之戳中痛点 - (4)i++ 和 ++i 探究原理

    先看一个例子: package com.test; public class AutoIncrement { public static void main(String[] args) { int ...

  2. linux下解压,压缩命令大全---方便新手查看

    本文最后讲述如何在打包时排除某些文件 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --- ...

  3. javascript提示抖动实现方法

    css代码: <style type="text/css"> #div1{ width:200px; height:200px; background-color:or ...

  4. Sencha Touch2 -- 11.1:定义具有关联关系的模型

    在Sencha Touch2.0中,可以定义不同模型之间的关联关系.例如,在开发博客网站的时候,可以首先定义用户(User)模型,然后为用户定义文章(Article)模型.一个用户可以发表多篇文章,因 ...

  5. [Leetcode Week9]Word Break II

    Word Break II 题解 题目来源:https://leetcode.com/problems/word-break-ii/description/ Description Given a n ...

  6. PL/SQL 09 包 package

    --定义包头 create or replace package 包名as  变量.常量声明;  函数声明;  过程声明;end; --定义包体 create or replace package b ...

  7. button的格式的问题

    1. <input type="button"  class="buttoncls"  onclick=""  value=" ...

  8. 8.read读取控制台输入

    read(选项)(参数)选项:-p:指定读取值时的提示符-t:指定读取时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了参数:变量:指定读取时的变量名

  9. [ Mariadb ] 通过HAProxy代理后端Mariadb实现负载均衡

    一.本次环境架构图 由于公司内网服务器有限,所以后端采用Mariadb自带的mysql_multi模型实现多实例. mysql的多实例有两种方式可以实现,两种方式各有利弊. 1.使用多个配置文件启动不 ...

  10. java javac 的区别

    cmd中,执行java命令与javac命令的区别: javac:是编译命令,将java源文件编译成.class字节码文件. 例如:javac hello.java 将生成hello.class文件 j ...