Android百度地图 关于visibility="gone"的奇葩问题
最近在项目中遇到一个奇葩问题,花了很长时间,在这里记录下。
问题描述:我的主界面是ViewPager+Fragment,并且设置缓存了我的4个ViewPager页面。左侧是一个侧滑菜单,点击相应按钮打开不同的Activity。右边的大片区域用的是FrameLayout将自定义地图和百度地图叠加全屏显示。左下角有一个按钮用于切换自定义地图和百度地图的显示,其实就是MapView的visibility="gone"和visibility="visible"的操作。简单画了下效果图:


问题来了,我进入该主界面,只要我点击btn进行地图显示的切换过,也就是说百度地图曾经显示过(visible),当我再打开其他activity,Back键返回到该Fragment时,百度地图就显示了,下面的按钮btn也被遮盖掉了,无论我之前是否将它隐藏(gone)掉过。在两个真机Android4.4的设备上运行没有这个情况,在其他Android4.0,4.1的设备上有这个问题,但是将gone换成invisible也不会有这个问题,但是这样的话就达不到我想要的效果了。

解决:
思路一:打印从进入到该Fragment,点击按钮,打开activity,back键返回该Fragment这一过程的log:

在onStop()中记住百度地图的显示状态(控件MapView),在onResume()中根据保存的值去控制百度地图的显示,获取到的值是正确的,但是控制MapView隐藏的代码却没有效果。
思路二:前面说过的4.4的设备运行没有问题,难道是版本问题?虽说gone,是让控件不占空间,但是这并不是问题的关键,真不知从何下手。
思路三:在百度地图Android API上找到问题原因,这应该是百度地图自身的一个bug(以后还是得细看文档啊)

但是即使知道了这个问题,还是不能完美的解决我的问题,最后我的onResume()中延迟了较短的时间,再将百度地图(MapView)隐藏或者显示。
@Override
public void onResume() {
mMapView.setVisibility(View.VISIBLE);
// MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()
mMapView.onResume();
super.onResume();
Log.i("yanqiong", "onResume===="+remBaiduMap);
baiduMapHandler.postDelayed(baiduMapRunnable, 900);
}
Handler baiduMapHandler=new Handler();
Runnable baiduMapRunnable=new Runnable() { @Override
public void run() {
if(isShowBaiduMap){
webView.setVisibility(View.GONE);
mMapView.setVisibility(View.VISIBLE);
}else{
webView.setVisibility(View.VISIBLE);
mMapView.setVisibility(View.GONE);
}
baiduMapHandler.removeCallbacks(this);
}
};
Android百度地图 关于visibility="gone"的奇葩问题的更多相关文章
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
- Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
- Android百度地图(二)结合方向传感器我们自己定位哪里走
Android百度地图(二)结合方向传感器我们自己定位哪里走 本文代码在http://blog.csdn.net/xyzz609/article/details/51943556的基础上进一步改动.有 ...
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
标签: Android百度地图API Key 分类: Android 百度地图开发(2) 最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...
- Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直觉得地图应用支持离线地图很重要啊,我等移动2G屌丝,流量不易, ...
- Android 百度地图API(01)_开发环境 HelloBaiduMap
转载于:http://blog.csdn.net/lmj623565791/article/details/37729091 转载于:http://blog.csdn.net/crazy1235/ar ...
- Android百度地图相关内容汇总
Android百度地图知识讲解 1.百度地图开发环境搭建 http://www.apkbus.com/android-116050-1-1.html 2.Android百度地图系列教程 h ...
- android 百度地图开发实例(转载)
因为在我的寝室google基站定位返回的数据总是为空,所以换成百度地图,发现百度地图开发起来非常方便,提供了许多有用的工具,地图的加载速度也比google地图快许多. 为了加强记忆,写一点androi ...
- Android 百度地图 简单实现--- 美食搜索
Android 百度地图 简单实现--- 美食 依赖包: 加入 Android 百度依赖包: 1 key: <!-- 开发人员 key --> <meta-dat ...
随机推荐
- css选择器万年不变的优先级和权重
我们在使用CSS对网页元素定义样式时经常会遇到这种情况:要对一般元素应用一般样式,然后在更特殊的元素上覆盖它们.那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢? 在CSS中,会 ...
- 字典NSDictionary以及NSMutableDictionary的用法总结
做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...
- perl 遍历对象数组
my $appsList ; eval { $appsList = $db->query( $sqlstr1 )->hashes->to_array; }; ### $appsLis ...
- [Voice communications] 声道的转换
本系列文章主要是介绍 Web Audio API 的相关知识,以及 web语音通信 中会遇到的一些问题,阐述可能存在错误,还请多多斧正! 很多粤语剧都提供了两个声道,一个左声道为粤语,一个右声道有国语 ...
- Mac下设置Android源代码编译环境
在Mac下编译Android最麻烦的就是设置Android的编译环境了,做完这一步基本上剩下的就是近乎傻瓜式的操作了.说起来也简单就三步,设置大小写敏感的文件系统.安装编译工具.设置文件系统同时能打开 ...
- C语言 · 查找整数
问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个. 输入格式 第一行包含一个整数n. 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000. 第三行包含一个 ...
- .NET 基础 一步步 一幕幕 [.NET 简介]
.NET 简介 .NET是 Microsoft XML Web services 平台.是微软用来实现XML,Web Services,SOA(面向服务的体系结构service-oriented ar ...
- eclipse下打包实践
前提: 配置好打包相关的插件,看打包的结果分别添加不同的plugin,装好m2eclipse. 以下步骤以war包的packing为例. 步骤: 如下图:右键,选择Run As 或者 Debug As ...
- css双飞翼布局
双飞翼布局是一种比较灵活的布局,始于淘宝UED,玉伯提出的,他着重介绍的是双飞翼栅格布局. 三列布局为"双飞燕"布局,可以把三栏比作一只鸟,main部分相当是于鸟的身体,而lef ...
- hbase 1.1.7在centor6.5安装过程
1.自己安装的最新版一直没成功,换成了1.1.7稳定版的.中间遇到的问题记录下 1) jdk 用的1.7版本的,安装过程省略. 2)下载hbase zip包:https://mirrors.tuna ...