android onResultActivity不执行原因总结
插一个注意点.在用ArrayAdapter的时候数据那里的类型必须是List<String> 不能是ArrayList<String>
1.在A.Activity中调用startActivityForResult()启动B.Activity后,再B.Activity中调用setResult() 方法后,A.Activity中的onResultActivity将会执行。
但遇到下列问题就不会执行了:
startActivityForResult()用法参照:http://www.cnblogs.com/liangstudyhome/p/3708296.html
- Activity的启动方式是singleTask 或者是singleMode
- 在传递的Intent中requescode小于0
- *** 就是在调startActivityForResult()的Activity在一个GroupActivity中( 其实是执行了GroupActivity的onResultActivity方法)
2.对上述问题的解决办法:
- 将Activity的启动方式改成stander
1. tab activity(想获取onResultActivity值的子Activity)中使用
getParent().startActivityForResult(intent,REQUEST);
2. 当子activity.finish 返回时,在ActivityGroup实现onActivityResult,内容类似于:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 向下传递
YourActivity currentActivity = (YourActivity) getLocalActivityManager()
.getCurrentActivity();
currentActivity.onChildActivityResult(requestCode, resultCode, data);
}
onChildActivityResult是一个你自己实现的方法,用来处理返回结果的。
具体的一个例子:
@SuppressWarnings("deprecation")
private void tabChange(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
containerBordy.removeAllViews();
Intent intent = null;
switch (buttonView.getId()) {
case R.id.tab_weather:
intent = new Intent(MainActivityTab.this,
WeatherActivityBaiDu.class);
break;
case R.id.tab_produce:
intent = new Intent(MainActivityTab.this,
ProductWarningActivity.class);
break;
case R.id.tab_im:
intent = new Intent(MainActivityTab.this,
ChatBriefActivity.class);
break;
case R.id.tab_diaster:
intent = new Intent(MainActivityTab.this,
RelevantForecastActivity.class);
break;
case R.id.tab_setting:
intent = new Intent(MainActivityTab.this, SettingActivity.class);
break;
case R.id.tab_more:
break;
}
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window subActivity = mlam.startActivity("startActivity", intent);
containerBordy.addView(subActivity.getDecorView());
}
}
上面的方法是将一个Activity加载到一个GroupActivity中。
要注意的是这的Activity是有一个startActivity的id,所以要将上述的onActivityResult方法变成:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println("返回的是这里的onActivityResult");
CommunicationActivity currentActivity = (CommunicationActivity) mlam
.getActivity("startActivity"); // Activity a = mlam.getCurrentActivity()
System.out.println("currentActivity-->>" + currentActivity); // System.out.println("requestCode-->>" + requestCode
// + " resultCode-->>" + resultCode + " data"
// + data.getIntExtra("blockID", 0));
currentActivity.onActivityResultFromMainActivity(requestCode,
resultCode, data);
// currentActivity.YSOS();
}
mlam对应的是LocalActivityManager.
onActivityResultFromMainActivity这是子Activity中自己定义的方法。
android onResultActivity不执行原因总结的更多相关文章
- Android 在Android代码中执行命令行
1.路径最好不要是自己拼写的路径/mnt/shell/emulated/0/wifidog.conf 最好是通过方法获取的路径,不然可能导致命令无效 (挂载点的原因) public static f ...
- 安卓执行机制JNI、Dalvik、ART之间的比較 。android L 改动执行机制。
Android L默认採用ART执行环境.全然兼容64位移动处理器.Google称这将比此前的Dalvik模式性能提高两倍,可是会占用很多其它的内存空间.Android有三种执行模式:JNI.Dalv ...
- android AVD启动失败原因之一
在mac上安装好Android SDK.AVD及相关的组件之后,手动创建了一个安卓模拟器后,通过actions启动,会弹出一个提示窗口,然后就闪退,也没有报错什么的,在网上搜了半天AVD启动失败的问题 ...
- Android 6.0 执行时权限处理全然解析
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/50709663: 本文出自:[张鸿洋的博客] 一.概述 随着Android 6. ...
- Android利用AlarmManager执行定时任务
Android中的AlarmManager功能很强大,它是一个全局定时器,可以在指定时间或者指定周期启动其他组件(包括Activity.Service.BroadcastReceiver). 使用Al ...
- Android 命令行执行工具类
最近在做android项目的时候,需要执行命令行命令,之前在网上找的不仅杂乱而且错误多,于是自己写了一份. 话不多说,直接上代码 import android.util.Log; import jav ...
- 穿越之旅之--android中如何执行java命令
android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了 ...
- Android ps命令执行后的各项参数含义
直接输入ps后可以看到如下信息: # ps ps USER PID PPID VSIZE RSS WCHAN PC NAME root 1 ...
- crond不执行原因分析
自己写了个脚本,让crond来周期性执行脚本进行备份,但是在crontab -e里面加入了执行脚本之后,发现没有执行,后来分析了一下,crond不执行的原因主要有以下几个方面: 1.crond服务没启 ...
随机推荐
- 安装S_S相关报错的troubleshooting
在安装S_S server时,在Debian上会出现类似如下的报错: File , in <module> sys.exit(main()) File , in main config = ...
- ffmpeg超详细综合教程——摄像头直播
本文的示例将实现:读取PC摄像头视频数据并以RTMP协议发送为直播流.示例包含了1.ffmpeg的libavdevice的使用2.视频解码.编码.推流的基本流程具有较强的综合性.要使用libavdev ...
- Quartz.net 2.x 学习笔记01
Quartz.net 2.0 2012年4月9日发布了Released版本,到目前(2014-12-08)为止是2.3版 Quartz.net 项目地址:http://www.quartz-sched ...
- 【转】使用Jmeter测试Webservice简单示例
1.webservice 先简单开发webservice,参考文档 http://www.cnblogs.com/xwdreamer/archive/2011/12/07/2296914.html w ...
- Linux的启动级别
一.启动级别 1.查看linux 系统默认启动级别cat /etc/inittab id:3:initdefault: ##可以看出默认为三 2.查看某一服务在各个启动级别上是否启动[root@loc ...
- 张瀚荣:如何用UE4制作3D动作游戏
转自:http://www.gamelook.com.cn/2015/06/218267 GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次 ...
- C#之Application.DoEvents()
Application.DoEvents()的最大作用就是时时响应, 可以看做是个线程的一个封装 private void button1_Click(object sender, EventArgs ...
- Docker - 使用 swarm 部署 services
前言 经过之前一段时间学习与思考,我们已经大概明确了一些感念: Docker image/container, service and node 简单来说,swarm允许我们以节点(node)的方式 ...
- 分布式队列 Celery
详情参见: 分布式队列神器 Celery 用户指南(User Guide) 1) Celery-4.1 用户指南: Application(应用) 2) Celery-4.1 用户指南: Task(任 ...
- mysql 存储过程 编写注意事项
mysql的存储过程有很多需要注意的地方,一不留神就会出错,可能调试了老半天才发现原因 1 没有return 语句 可以采用leave代替,返回直接使用select语句 比如select 1: 2. ...