做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_Test”旨在提供一个简单的TabHost使用教程,通过配套博客的详细解析,帮助开发者更好地理解和运用这个组件。 TabHost是一个容器,它允许开发者在界面上放置多个TabWidget(选项卡)和一个...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的界面,让用户能够通过不同的标签页浏览和切换不同的功能或内容。本示例是关于如何在Android中实现嵌套的TabHost,即两个层级的TabHost,类似...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建具有多个标签(Tab)的界面,每个标签对应一个不同的活动(Activity)。本教程将详细讲解如何使用TabHost来实现类似新浪微博的应用界面,以供开发者...
当我们提到“安卓 TabHost 嵌套 TabHost”,这意味着在一个TabHost内,我们还要再创建一个TabHost,形成一个多层选项卡的结构,以提供更复杂的导航体验。 首先,我们来理解基本的TabHost用法。TabHost通常由两部分...
在Android开发中,TabHost是一个重要的组件,它用于创建具有多个Tab标签的界面,每个标签页可以关联一个单独的活动(Activity)或者视图(View)。这篇博客文章"TabHost详解 博文对应源码(三):继承自TabActivity...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的界面,每个选项卡可以展示不同的内容。在传统的TabHost使用中,我们通常只能使用系统预设的样式和颜色,但为了使应用更加个性化,开发者...
在Android开发中,TabHost是一个常用的组件,用于实现多页面的切换效果,通常与TabWidget和FrameLayout一起使用,创建类似手机应用底部导航栏的布局。然而,在实际使用过程中,开发者经常会遇到一个问题:TabHost...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的用户界面,使得用户可以在不同的功能之间轻松切换。本文将详细讲解如何在Android Studio中使用TabHost进行布局设计,以及如何自定义TabHost的...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签可以展示不同的内容或活动(Activity)。本教程将详细介绍如何使用TabHost,特别适合初学者和教学场景,例如构建一个模拟...
在Android开发中,TabHost是一个非常重要的组件,它允许我们创建具有多个标签(Tab)的界面,每个标签对应一个不同的活动(Activity)或视图(View)。本文将深入讲解如何在Android应用程序中有效地使用TabHost。 ...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以展示不同的内容或活动(Activity)。TabHost结合TabWidget和FrameLayout工作,TabWidget用于显示选项卡,而...
在Android开发中,TabHost是实现标签栏切换界面的一个重要组件。TabHost允许开发者创建一个包含多个Tab的界面,每个Tab都可以关联到不同的活动(Activity)或者帧布局(FrameLayout)。下面将详细介绍TabHost的使用...
在Android开发中,TabHost组件是一个非常实用的控件,用于创建带有标签页的应用界面,让用户可以在多个功能之间轻松切换。本文将详细讲解如何使用TabHost,并通过实例代码进行演示。 首先,TabHost的核心组成部分...
在Android开发中,TabHost是实现底部导航菜单的一种传统方式,它允许用户在多个标签页之间切换,每个标签页通常代表一个不同的功能区域。本文将详细介绍如何使用TabHost来创建带有图片和文字,并且在选中时有明显...
在Android开发中,TabHost是一种常用的组件,用于创建带有底部导航栏的应用界面。TabHost允许开发者将多个小部件(如Activity、View或者Intent)组织在一个TabWidget中,为用户提供直观的多视图切换功能。本篇文章将...
8. **兼容性问题**:由于TabHost是早期Android API的一部分,所以在较低版本的Android系统上运行时,可能需要使用Support Library中的Fragment和TabHost的兼容版本。 9. **现代替代方案**:尽管TabHost仍然是可行的...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以展示不同的内容或活动。本案例是为初学者设计的,旨在帮助理解如何在Android应用中有效地使用TabHost。 ...
- 这个项目可能包含了几个关键的文件:MainActivity.java(主Activity,包含TabHost的设置),activity_main.xml(主布局文件,包含TabHost和TabWidget),以及分别对应各个标签页的Fragment或Activity。...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以关联到一个不同的Activity或Fragment。嵌套TabHost则是一种更复杂的设计模式,它允许在一个TabHost中包含另一个...