私は初心者のアンドロイドプログラマーです。
文脈を説明しましょう。
私のプロジェクトでは ActionBarSherlock を使用しています。
- SherlockListFragment と、Google マップ MapView (本質的には MapFragment) を含む SherlockFragment の 2 つのフラグメントを含むアクティビティ (Activity1) があります。
- 検索結果はリスト フラグメントとマップ フラグメントに表示され、アクション バーのオプション ボタンは、現在表示されているフラグメントをリストとマップの間で切り替えます。
- リストまたは検索結果のマップで項目を選択すると、選択した項目のデータを表示する新しいアクティビティ (Activity2) が開始されます。
- この新しいアクティビティには、同様のフローがあります。データを表示するフラグメントと、場所を表示するマップ フラグメントです。アクション バーのオプション ボタンで切り替えます。
問題:
- 検索結果 (Activity1) のリスト フラグメントでリスト アイテムを選択でき、詳細ページ (Activity2) が正常に開始されます。
- (Activity1) のマップ オーバーレイからマップ アイテムを選択すると、アプリがクラッシュし、以下に示すスタック トレースが表示されます。
私がこれまでに試したこと:
- 「マップのサイズがゼロ」と、「android」と「illegalstateexception」を含む同じ検索の多くの順列、およびスタックトレースのさまざまな行を検索しました。また、android には関係なく、に関連する結果を調べました。 google maps apis は一般的で、この URL http://www.androidpub.com/1551654を除いて、このエラーに遭遇した人をどこにも見つけることができませんでした。あまり役に立ちませんでした。
- 何が起こっているのかを確認するために、ソース コードのスニペットをいくつか見つけようとしましたが、何も見つかりませんでした。
- コードにログを追加して、例外が発生した場所を特定しましたが、(Activity2) 詳細アクティビティが開始された後、つまり onCreate() が呼び出された後に発生することがわかりました。 . 詳細フラグメントとマップ フラグメントの両方が、onCreate() 内で正常にインスタンス化されています。コード内で例外をキャッチする場所さえ見つけられませんでした。したがって、私が見る限り、この例外は完全に google の MapView コードのバグのようですが、どこかで間違いを犯した場合は、それを示してください。ここで何が起こっているのかを教えてくれる人なら誰でも助けてくれます。
ということで、まとめ。現在マップビューを表示しているアクティビティ (Activity1) から、別のマップビューを含むフラグメントもホストしている別のアクティビティ (Activity2) に移動すると、クラッシュが発生します。ただし、(Activity1) に表示されているリスト フラグメントから別のマップ フラグメントを含む他のアクティビティ (Activity2) に移動する場合、クラッシュは発生しません。
これが十分な詳細であることを願っています。ご不明な点がございましたら、コメントください。
D/memalloc( 121): /dev/pmem: Allocated buffer base:0x4215c000 size:2088960 offset:4177920 fd:66
D/memalloc(30944): /dev/pmem: Mapped buffer base:0x5b4f5000 size:6266880 offset:4177920 fd:164
D/AndroidRuntime(30944): Shutting down VM
W/dalvikvm(30944): threadid=1: thread exiting with uncaught exception (group=0x40aaa228)
E/AndroidRuntime(30944): FATAL EXCEPTION: main
E/AndroidRuntime(30944): java.lang.IllegalStateException: Map has zero size
E/AndroidRuntime(30944): at android_maps_conflict_avoidance.com.google.googlenav.map.Map.drawMap(Map.java:818)
E/AndroidRuntime(30944): at com.google.android.maps.MapView.drawMap(MapView.java:1091)
E/AndroidRuntime(30944): at com.google.android.maps.MapView.onDraw(MapView.java:522)
E/AndroidRuntime(30944): at android.view.View.draw(View.java:11071)
E/AndroidRuntime(30944): at android.view.View.getDisplayList(View.java:10462)
E/AndroidRuntime(30944): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2605)
E/AndroidRuntime(30944): at android.view.View.getDisplayList(View.java:10425)
E/AndroidRuntime(30944): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2605)
E/AndroidRuntime(30944): at android.view.View.getDisplayList(View.java:10425)
E/AndroidRuntime(30944): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2605)
E/AndroidRuntime(30944): at android.view.View.getDisplayList(View.java:10425)
E/AndroidRuntime(30944): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2605)
E/AndroidRuntime(30944): at android.view.View.getDisplayList(View.java:10425)
E/AndroidRuntime(30944): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2605)
E/AndroidRuntime(30944): at android.view.View.getDisplayList(View.java:10425)
E/AndroidRuntime(30944): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:879)
E/AndroidRuntime(30944): at android.view.ViewRootImpl.draw(ViewRootImpl.java:1948)
E/AndroidRuntime(30944): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1654)
E/AndroidRuntime(30944): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2498)
E/AndroidRuntime(30944): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(30944): at android.os.Looper.loop(Looper.java:154)
E/AndroidRuntime(30944): at android.app.ActivityThread.main(ActivityThread.java:4894)
E/AndroidRuntime(30944): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(30944): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(30944): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(30944): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(30944): at dalvik.system.NativeStart.main(Native Method)
E/EmbeddedLogger( 254): App crashed! Process: com.myapp.android
E/EmbeddedLogger( 254): App crashed! Package: com.myapp.android v5 (2.0)
E/EmbeddedLogger( 254): Application Label: myapp
W/ActivityManager( 254): Force finishing activity com.myapp.android/.activity.InfoActivity
W/ActivityManager( 254): Force finishing activity com.myapp.android/.activity.SearchActivity