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服务没启 ...
随机推荐
- java代码getHostAddress .getHostName()的练习
总结:主机名,ip地址是可以实现的,关键是要掌握 package com.aa; import java.io.IOException; import java.net.*; public class ...
- thinkphp中的session的使用和理解!
session的作用:session可以长时间的保存数据,不丢失. session的常用于: 1.登录,保存登录信息 2.保存购物车信息 3.保存验证码信息 定义session常量 define('W ...
- python开发mysql:mysql安装(windows)&密码找回&存储引擎简介&库表的增删改查
一,mysql安装 下载地址 https://dev.mysql.com/downloads/file/?id=471342 解压后,将目录C:\mysql-5.7.19-winx64\bin添加到计 ...
- 进程句柄和进程ID的区别和关系
进程和进程句柄和进程id含义 进程是一个正在运行的程序,进程里可以包括多个模块(DLL,OCX,等)进程句柄是程序访问时用到的东西,当前进程句柄等于主模块的句柄,当你使用OpenProcess时的进程 ...
- Python Twisted系列教程5:由Twisted支持的诗歌客户端
作者:dave@http://krondo.com/twistier-poetry/ 译者:杨晓伟(采用意译) 你可以从这里从头开始阅读这个系列 抽象地构建客户端 在第四部分中,我们构建了第一个使用 ...
- python与桶排序
问题提出: 将以下数据: 6, 8, 2, 3, 4, 0, 9, 1, 5,1 按从小到达排列. 桶排序原理: 桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举出来,然后统计元素出现 ...
- L1,L2范数和正则化 到lasso ridge regression
一.范数 L1.L2这种在机器学习方面叫做正则化,统计学领域的人喊她惩罚项,数学界会喊她范数. L0范数 表示向量xx中非零元素的个数. L1范数 表示向量中非零元素的绝对值之和. L2范数 表 ...
- web界面上的字体兼容方案
原贴地址:http://www.baidufe.com/item/60cd11d3bfdee5c51369.html 做前端的,对web界面基本都抠的很仔细,尤其精确到1px! 类似边距.宽度.高度等 ...
- spring不能注入静态变量的原因
静态方法是属于类(class)的,普通方法才是属于实体对象(也就是New出来的对象)的,spring注入是在容器中实例化对象,所以不能使用静态方法. @Autowired private static ...
- Python中__new__与__init__介绍
在python2.x中,从object继承得来的类称为新式类(如class A(object))不从object继承得来的类称为经典类(如class A()) 新式类跟经典类的差别主要是以下几点: 1 ...