做monkey测试时,总碰到一个死机的问题
2515:30:19.010E/AndroidRuntime(2878):Uncaughthandler:thread main exiting due to uncaught exception
09-2515:30:19.026E/AndroidRuntime(2878):java.lang.NullPointerException 09-2515:30:19.026E/AndroidRuntime(2878):atandroid.widget.TabHost.dispatchWindowFocusChanged(TabHost.java:295) 09-2515:30:19.026E/AndroidRuntime(2878):atandroid.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661) 09-2515:30:19.026E/AndroidRuntime(2878):atandroid.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661) 09-2515:30:19.026E/AndroidRuntime(2878):atandroid.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661) 09-
可以看出是 TabHost.java 第295行,只在2.1和之前的版本报,找到2.1版本的代码看出
@Override
public void dispatchWindowFocusChanged(boolean hasFocus) {
mCurrentView.dispatchWindowFocusChanged(hasFocus);//第295行
}
原因找到了,mCurrentView 为空导致的。
在看后续Android版本这块的代码
@Override
public void dispatchWindowFocusChanged(boolean hasFocus) {
if (mCurrentView != null){
mCurrentView.dispatchWindowFocusChanged(hasFocus);
}
}
说明这个问题可能是系统BUG,在后续已经被修复了
那么只需要自定义一个TabHost类,替换掉应用中的TabHost 即可,就可以避免这种BUG在低版本机器上发生.
public class ESTabHost extends TabHost {
public ESTabHost(Context context) {
super(context);
}
public ESTabHost(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void dispatchWindowFocusChanged(boolean hasFocus) {
try {
super.dispatchWindowFocusChanged(hasFocus);
} catch (Exception e) {
}
}
}
分享到:
相关推荐
《TabHost详解》对应源码之三:继承自TabActivity,博客地址:http://blog.csdn.net/harvic880925/article/details/17120325
Android fragment 内部嵌套tabhost组件 详情请见: http://blog.csdn.net/singleton1900/article/details/27087833
自定义样式的tabHost,包含两种方式:activity对象作为内容、View对象作为内容。注释详细
1:解决了tabhost 位于底部的问题; 2:解决了tabhost 一个tab页中多个activity的跳转及返回问题。
配套博客 对TabHost选项卡组件进行了详细解析,比较使用的例子
tabhost中嵌套一个tabhost。
首先,定义TabHost的布局文件: 代码如下:<?xml version=”1.0″ encoding=”utf-8″?><TabHost xmlns:android=”http://schemas.android.com/apk/res/android” android:id android:layout_width=”fill_...
Android TabHost嵌套示例,像电脑端一样在屏幕上显示上下嵌套的TAB效果,单击后切换内容,在内容页上又重新显示二级的TAB,实现嵌套,如示例图所示,注意:对于TabHost、布局文件中必须包含: TabHost、TabWidget ...
最近在使用TabHost的时候遇到了一些奇怪的问题,在这里总结分享备忘一下。
TabHost分页简单应用,以及解决TabHost下面白线问题.
TabHost+ViewPager实现滑动tabhost, viewPager;tabhost;滑动;源码
TabHost布局文件 我们先来了解一下布局文件的基本内容: 1. 根标签及id 设置Android自带id : XML布局文件中, 可以使用 标签设置, 其中的id 需要引用 android的自带id : android:id=@android:id/tabhost ; getHost...
Tabhost加Activity搭建app框架:tabhost,tabActivity,实现底部导航选项卡,每一个选项卡对应一个Activity,最外层是一个主Activity
Android studio开发,布局TabHost布局 demo,包括修改tab布局: tab栏字体颜色,tab栏大小等布局.
现今很流行的 TabHost的各种实现方式的代码
Android 嵌套TabHost示例. 两层TabHost嵌套,实现的效果类似网页上的二级菜单栏。
可以横向拖动的TabHost,下载后有问题可以直接评论下问题。有时间必来解决
Android TabHost TabActivity TabHost的简单使用
TabHost中填充自定义ListView
tabhost页面跳转需要用到的tabhost单例模式小例子,也有tabhost底部的布局