今天使用 startActivityForResult 时遇到两个问题,应该是常见问题了吧,浪费了些时间才搞定,做个记录。

1. onActivityResult 的触发顺序问题

这个问题很郁闷,我一开始的设计是

MainActivity -> LoginActivity -> onActivityResult  (通知已登录成功相关 UI 更新)

结果却是刚进入 LoginActivity 时就触发了 onActivityResult  事件,导致 resultCode 始终为 0 ,为这个问题郁闷了半天

MainActivity.java

            Intent intent = new Intent(this, LoginActivity.class);
startActivityForResult(intent, LOGIN_REQUEST);
    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
ZLog.i(TAG, "onActivityResult: requestCode="+ requestCode +", resultCode="+ resultCode);
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LOGIN_REQUEST) {
ZLog.i(TAG, "requestCode");
if (resultCode == LOGIN_RESULT) {
ZLog.i(TAG, "resultCode");
this.onCreateOptionsMenu(this.mMenu);
}
}
}

LoginActivity.java

                setResult(MainActivity.LOGIN_RESULT);
finish();

后来谷歌一番之后,找到了问题所在,是 onActivityResult 和 AndroidManifest.xml 中 activity 的 launchMode 配置有冲突造成的。

解决办法:

需要返回 result 的 activity 不能使用:

android:launchMode="singleTask"
android:launchMode="singleInstance"

甚至有人说 singleTop 也会冲突,那就只好用默认的 standard 了,至于原理我没空深入去研究了。

经试验,设置为默认的 standard 后确实就正常了,暂时就这样解决吧。

2. 执行 finish() 后出现错误提示 Activity has leaked window com.android.internal.policy.impl.PhoneWindow

这是因为在执行 finish 释放一个 activity 时,还有一些依赖于该 activity 的控件没有关闭造成的,我这里是因为 dialog 只是执行了一下 hide() 方法,使用 dismiss() 一下就ok了

最新文章

  1. Java简易日历的实现
  2. Java 8 Stream API详解--转
  3. Guava学习-目录
  4. [转]office 2016 4合1/3合1 专业版 增强版 精简绿色安装版
  5. java控制台输入
  6. iOS 利用self.navigationItem.backBarButtonItem修改后退按钮文字
  7. 迷你sql profile,给缺少sql跟踪的朋友们
  8. Session深入理解
  9. css expression explaination
  10. css05文本,文字属性
  11. Android手势识别(单击 双击 抬起 短按 长按 滚动 滑动)
  12. mongodb迁移
  13. 响应式web-媒体查询
  14. Git使用教程,最详细,最傻瓜,最浅显,真正手把手教
  15. PHP获取新插入的主键id
  16. hive中使用union出现异常数据
  17. _T宏的使用
  18. mysql 常用sql语句
  19. virt-manager中为centos 7.2 扩容根分区
  20. 从浏览器输入URL到显示页面到底发生了什么?

热门文章

  1. Linux下获取硬盘使用情况
  2. [转]ARM/Thumb/Thumb-2
  3. win8商店应用验证,二进制文件是在调试模式下生成的解决方案。
  4. .net下灰度模式图像
  5. MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...
  6. tastypie Django REST API developement 1)
  7. PHP之语言基础01 By ACReaper
  8. ASP.NET发送电子邮件源码示例
  9. TCMalloc小记
  10. RSA算法优化