我正在尝试动态创建MapView并将其插入到正在运行的片段中。
我成功将MapView插入其父布局(位于片段内),但是地图未显示,我在谷歌地图库中获得了内部例外。
我怀疑它与片段生命周期方法的转发有关。我已转发它们,但我怀疑只调用onResume,因为插入mapView时片段已经存在。
在提供的堆栈跟踪中,您可以看到内部mapview错误,它来自onResume。
我应该手动调用onCreate和onStart吗?或者我做错了什么?
提前致谢!
06-11 21:11:29.799: W/System.err(7804): java.lang.NullPointerException
06-11 21:11:29.799: W/System.err(7804): at maps.aj.bi.b(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at bcz.onTransact(SourceFile:73)
06-11 21:11:29.799: W/System.err(7804): at android.os.Binder.transact(Binder.java:297)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.maps.internal.IMapViewDelegate$a$a.onResume(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.maps.MapView$a.onResume(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.internal.bb$6.b(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.internal.bb$1.a(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.maps.MapView$b.aP(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.maps.MapView$b.a(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.internal.bb.a(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.internal.bb.onResume(Unknown Source)
06-11 21:11:29.799: W/System.err(7804): at com.google.android.gms.maps.MapView.onResume(Unknown Source)
---------------------
06-11 21:11:29.799: W/System.err(7804): at com.regaliz.funq.story.FunqLayer_map.delegate_onResume(FunqLayer_map.java:66)
06-11 21:11:29.799: W/System.err(7804): at com.regaliz.funq.story.FunqSlide.onResume(FunqSlide.java:622)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.app.Fragment.performResume(Fragment.java:1503)
-------------------
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:807)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1112)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1461)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.view.ViewPager.populate(ViewPager.java:1064)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.view.ViewPager.populate(ViewPager.java:911)
06-11 21:11:29.799: W/System.err(7804): at android.support.v4.view.ViewPager$3.run(ViewPager.java:242)
答案 0 :(得分:0)
我在其他帖子上找到灵感: Android Maps V2 MapView inside custom fragment (NPE)
通过在片段的 onCreateView
内手动调用片段创建后,我成功地动态实例化了mapviewMapsInitializer.initialize(context);
mapView.onCreate(bundle);
文档说你必须转发 onCreate ,但他们一般会谈及活动和&片段和片段也有 onCreate(束)方法,但是,根据我的经验(片段),我不得不转发 onCreateView 而不是 onCreate 强大>全力以赴。
答案 1 :(得分:0)
对我有用的解决方案是在片段上的mapView.onCreate(savedInstanceState)
方法中调用onActivityCreated(savedInstanceState)
。
一定是Google文档中的错误。但是,还要记得按照Google文档调用所有其他成员。
希望有所帮助