Android之startActivityForResult
作用:当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的更多相关文章
- Android之startActivityForResult的使用
在Android中startActivityForResult主要作用就是: A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A ...
- Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回
一.使用场景 在一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Ac ...
- Android使用 startActivityForResult 、 onActivityResult 时的注意事项
今天使用 startActivityForResult 时遇到两个问题,应该是常见问题了吧,浪费了些时间才搞定,做个记录. 1. onActivityResult 的触发顺序问题 这个问题很郁闷,我一 ...
- Android的startActivityForResult不起作用
之前startActivityForResult一直用的好好的,今天发现怎么也不起作用.检查后发现有两点影响了. 1.android:launchMode="singleTask" ...
- 【转】android的startActivityForResult学习心得
http://blog.csdn.net/yanzi1225627/article/details/7800529 从昨晚到现在终于调试通了一个startActivityForResult的例子,网上 ...
- Android Fragment StartActivityForresult调用实例
fragment里面的onActivityResult 怎样才能被调用,很简单,就一句话, startActivityForResult(intent, getActivity().RESULT_FI ...
- 简化Android的startActivityForResult调用
一个是解决在onActivityResult 中判断requestCode的问题,第二个是让调用代码的地方就知道我是如何处理对方activity 的返回的. 首先我们有一个ResultActivity ...
- android 加载自定义图片并在图片上绘图
来源:毕设 关键词:Bitmap Canvas //毕设中需要自定义室内地图,并且在地图上绘制轨迹 //此处是一个测试Demo,实现图片的加载和记录手指在屏幕上的运动轨迹 图片的载入 使用系统提供的内 ...
- 打开Android系统安装APK的页面
//使用隐式意图开启安装APK的Activity Intent intent = new Intent("android.intent.action.VIEW"); intent. ...
随机推荐
- Java之戳中痛点 - (4)i++ 和 ++i 探究原理
先看一个例子: package com.test; public class AutoIncrement { public static void main(String[] args) { int ...
- linux下解压,压缩命令大全---方便新手查看
本文最后讲述如何在打包时排除某些文件 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --- ...
- javascript提示抖动实现方法
css代码: <style type="text/css"> #div1{ width:200px; height:200px; background-color:or ...
- Sencha Touch2 -- 11.1:定义具有关联关系的模型
在Sencha Touch2.0中,可以定义不同模型之间的关联关系.例如,在开发博客网站的时候,可以首先定义用户(User)模型,然后为用户定义文章(Article)模型.一个用户可以发表多篇文章,因 ...
- [Leetcode Week9]Word Break II
Word Break II 题解 题目来源:https://leetcode.com/problems/word-break-ii/description/ Description Given a n ...
- PL/SQL 09 包 package
--定义包头 create or replace package 包名as 变量.常量声明; 函数声明; 过程声明;end; --定义包体 create or replace package b ...
- button的格式的问题
1. <input type="button" class="buttoncls" onclick="" value=" ...
- 8.read读取控制台输入
read(选项)(参数)选项:-p:指定读取值时的提示符-t:指定读取时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了参数:变量:指定读取时的变量名
- [ Mariadb ] 通过HAProxy代理后端Mariadb实现负载均衡
一.本次环境架构图 由于公司内网服务器有限,所以后端采用Mariadb自带的mysql_multi模型实现多实例. mysql的多实例有两种方式可以实现,两种方式各有利弊. 1.使用多个配置文件启动不 ...
- java javac 的区别
cmd中,执行java命令与javac命令的区别: javac:是编译命令,将java源文件编译成.class字节码文件. 例如:javac hello.java 将生成hello.class文件 j ...