gpt4 book ai didi

Android - IllegalStateException : map has zero size

转载 作者:IT老高 更新时间:2023-10-28 23:36:34 26 4
gpt4 key购买 nike

我是一名新手 android 程序员。

让我给出一些上下文。
我的项目使用 ActionBarSherlock。

  1. 我有一个包含两个 fragment 的 Activity (Activity1) - 一个 SherlockListFragment 和一个包含谷歌地图 MapView(本质上是 MapFragment)的 SherlockFragment。
  2. 搜索结果显示在列表 fragment 和 map fragment 中,操作栏选项按钮在列表和 map 之间切换当前显示的 fragment 。
  3. 在列表或搜索结果 map 中选择一个项目会启动一个新 Activity (Activity2),以显示来自所选项目的数据。
  4. 这个新 Activity 有一个类似的流程:一个显示数据的 fragment 和一个显示位置的 map fragment - 由操作栏选项按钮切换。

问题:

  1. 我可以在搜索结果(Activity1)列表 fragment 中选择一个列表项,并成功启动详细信息页面(Activity2)。
  2. 当我从 (Activity1) 中的 map 叠加层中选择一个 map 项时,应用程序崩溃,我得到如下所示的堆栈跟踪。

到目前为止我已经尝试过:

  1. 我搜索了“map has zero size”和同一搜索的许多排列,包括“android”和“illegalstateexception”以及stacktrace的各个行,我检查了甚至与android无关的结果,但是通常与谷歌地图 apis 相关,除了这个 url http://www.androidpub.com/1551654 之外,我无法在任何地方找到遇到此错误的任何东西或任何人但我不懂韩语,谷歌翻译也帮不上什么忙。
  2. 我试图找到一些源代码 fragment 以了解发生了什么,但没有任何结果。
  3. 我在我的代码中添加了日志以尝试查明异常发生的位置,我所能找到的只是它发生在 (Activity2) 详细信息 Activity 开始之后的某个时间,即 onCreate( ) 叫做。并且细节 fragment 和 map fragment 都已在 onCreate() 中成功实例化。我什至无法在我的代码中找到一个位置来捕获异常。因此,就我所见,这个异常似乎完全是谷歌 MapView 代码中的一个错误,但如果我在任何地方犯了错误,请务必显示出来。我愿意向任何能告诉我这里发生了什么的人提供帮助。

所以,总而言之。当从具有当前显示 map View 的 Activity (Activity1) 转到另一个 Activity (Activity2) 时,会发生崩溃,该 Activity 也托管包含另一个 map View 的 fragment 。但是当从 (Activity1) 中显示的列表 fragment 转到包含另一个 map fragment 的另一个 Activity (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

最佳答案

根据我的经验,避免这个错误的唯一方法是不在 Fragments 中使用 MapViews。一旦将 MapView 添加到父 View 中,无论是动画还是篡改它的位置,都完全移动 MapView 总是给我带来问题。我发现最有效的方法是在 map 和另一个 View 之间切换,其中 MapActivity 管理 MapView 而 fragment 管理另一个 View 。我再次重新实现了相同的功能,这没有问题。但是,我会发现这是针对未知原因的问题(很可能是 android maps API 中的错误)的解决方法。

关于Android - IllegalStateException : map has zero size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com