2

我收到了来自我编写的应用程序用户的报告,称他在开始某个活动时会获得 FC。我无法在模拟器或我的 HTC Hero(运行 1.5)上重现该问题,但这个运行 HTC Magic(使用 1.6)的用户每次都面临这个错误。

困扰我的是,堆栈跟踪中没有一个步骤实际上包含我的应用程序中的任何代码(com.filmtipset

01-07 00:10:26.773 I/ActivityManager(  141): Starting activity: Intent { cmp=com.filmtipset/.ViewMovie (has extras) }
01-07 00:10:27.023 D/AndroidRuntime( 2402): Shutting down VM
01-07 00:10:27.023 W/dalvikvm( 2402): threadid=3: thread exiting with uncaught exception (group=0x4001e170)
01-07 00:10:27.023 E/AndroidRuntime( 2402): Uncaught handler: thread main exiting due to uncaught exception
01-07 00:10:27.083 E/AndroidRuntime( 2402): java.lang.NullPointerException
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.widget.TabWidget.dispatchDraw(TabWidget.java:173)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.View.draw(View.java:6552)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.widget.FrameLayout.draw(FrameLayout.java:352)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.View.draw(View.java:6552)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.widget.FrameLayout.draw(FrameLayout.java:352)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1883)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewRoot.draw(ViewRoot.java:1332)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewRoot.performTraversals(ViewRoot.java:1097)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.os.Handler.dispatchMessage(Handler.java:99)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.os.Looper.loop(Looper.java:123)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at android.app.ActivityThread.main(ActivityThread.java:4320)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at java.lang.reflect.Method.invokeNative(Native Method)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at java.lang.reflect.Method.invoke(Method.java:521)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
01-07 00:10:27.083 E/AndroidRuntime( 2402): at dalvik.system.NativeStart.main(Native Method)

如果我错过了任何感兴趣的东西,请在这里完整转储

那么,我猜测我的布局可能有问题。它非常冗长,所以我将其发布在这里,而不是将整个内容粘贴到 SO 上。

有一个 tabwidget,其中一个选项卡连接到滚动视图,一个连接到svFilmInfo线性布局llComments

选项卡主机的填充方式如下:

Drawable commentSelector = getResources().getDrawable(R.drawable.tabcomment);
Drawable infoSelector = getResources().getDrawable(R.drawable.tabinfo);

mTabHost = getTabHost();
mTabHost.getTabWidget().setBackgroundColor(Color.BLACK);
mTabHost.addTab(mTabHost.newTabSpec("tabInfo").setIndicator("Filminfo", infoSelector).setContent(R.id.svFilmInfo));
mTabHost.addTab(mTabHost.newTabSpec("tabInfo").setIndicator("Kommentarer", commentSelector).setContent(R.id.llComments));

由于我自己无法重现该错误,并且由于我在堆栈跟踪中找不到任何可能导致错误的内容,因此我不知道从哪里开始解决此问题。

我会很感激任何指示。

4

2 回答 2

3

当人们TabHost在他们的布局中有一个但不添加TabSpecs它时,我会遇到这样的堆栈跟踪。您在添加选项卡的位置显示代码 - 您确定在所有情况下都会调用它吗?

于 2010-01-07T12:10:42.957 回答
2

我在我的应用程序中遇到了同样的错误,但仅限于 Android 1.6 及更高版本 - 它适用于 1.5。

原因:初始应用程序 Activity 扩展了 TabActivity 但带有 TabHost 小部件的布局 XML 没有通过 onCreate() 范围内的 setContentView() 加载(它计划稍后通过 Runnable 加载)。

然后首先尝试在屏幕上实际绘制这种未完全处理的 TabActivity 导致在 android.widget.TabWidget.dispatchDraw(TabWidget.java:173) 处出现 NullPointerException 崩溃

您必须在 onCreate 结束之前加载 XML 或实例化 TabHost 并以编程方式填充 newTabSpecs。

于 2010-04-11T21:41:34.033 回答