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 があり、1 つのタブが scrollview に接続され、もう 1 つのタブがsvFilmInfolinear layout に接続されています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 で動作しました。

理由:最初のアプリケーション アクティビティは 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 に答える