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服务没启 ...
随机推荐
- 常用JavaScript操作页面元素的方法
1.取得dropdownlist的选中值 var ddl =document.getElementById('<%=ddlusers.ClientID%>'); var index = d ...
- php excel 设置单元格格式为文本格式
学习源头:https://www.cnblogs.com/php-linux/p/6179442.html 解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制 ...
- FTP文件传输协议两种模式 ftp协议集,错误码集,ftp客户端命令集
TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置.联接的方式.甚至是是否使用相同的操 ...
- Avro之二:入门demo
一.使用avro-maven插件为avsc文件生成对应的java类: 在项目的pom.xml中增加依赖及插件如下: <dependency> <groupId>org.apac ...
- Linux内核中常见内存分配函数
1. 原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...
- JS中有几种数据类型分别是哪几种
number,string,boolean,null,undefined,object
- HTML5+ 初识,HBuilder,夜神模拟器,Webview
一.HTML5+ 初识 HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任 ...
- Java微信公众平台开发(一)--接入微信公众平台
转自:http://www.cuiyongzhi.com/post/38.html (一)接入流程解析 在我们的开发过程中无论如何最好的参考工具当然是我们的官方文档了:http://mp.weixin ...
- Python基础学习六 操作Redis
import redis r = redis.Redis(host=',db=1) #set get delete setex 都是针对string类型的 k-v # r.set('louis_ses ...
- jQuery.ajax向后台传递数组问题
今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值 前台js方法部分代码如下: //创建一个测试数组 var boxIds = new Array(); boxIds. ...