动态创建MapView(API v2)

时间:2013-06-11 19:26:45

标签: android dynamic android-mapview creation

我正在尝试动态创建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)

2 个答案:

答案 0 :(得分:0)

我在其他帖子上找到灵感: Android Maps V2 MapView inside custom fragment (NPE)

通过在片段的 onCreateView

内手动调用片段创建后,我成功地动态实例化了mapview
MapsInitializer.initialize(context);
mapView.onCreate(bundle);

文档说你必须转发 onCreate ,但他们一般会谈及活动和&片段和片段也有 onCreate(束)方法,但是,根据我的经验(片段),我不得不转发 onCreateView 而不是 onCreate 全力以赴。

答案 1 :(得分:0)

对我有用的解决方案是在片段上的mapView.onCreate(savedInstanceState)方法中调用onActivityCreated(savedInstanceState)

一定是Google文档中的错误。但是,还要记得按照Google文档调用所有其他成员。

希望有所帮助