添加或移除Google Maps V2时出现黑屏闪烁问题

5
我有一个活动包含3个片段,可以通过选项卡切换。其中一个片段包含一张地图。我尝试使用SupportMapFragment和com.google.android.gms.maps.MapView在片段中实现地图。
但是,当我添加或替换具有地图的片段时,会出现屏幕黑色闪烁的问题,而其他片段没有这种情况发生。
我尝试查找并尝试将地图背景设为透明,但这对我没有任何帮助。
是否有人有解决方案?

如何将地图背景设置为透明? - NullPointerException
当你尝试替换/添加“地图片段”时,请允许一点时间来加载地图,尝试添加“new Handler().postDelayed”。 - Anuj
@Anuj能否详细说明一下?具体怎么做呢? - elmorabea
@NullPointerException,我在帖子中提到它不起作用 :) - elmorabea
我也有同样的问题,请问你找到解决方法了吗? - Meriam
显示剩余5条评论
2个回答

0

实际上我必须在这里发布它,你能试着使用

 new Handler().post(new Runnable()
            {
                public void run()
                {
                    mSupportMapFragment = new SupportMapFragment();
                    mFragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
                    mFragmentTransaction.replace(mMapWrapperLayoutStoreMap.getId(), mSupportMapFragment);
                    mFragmentTransaction.addToBackStack(BK_STK_SUPPORT_MAP_FRAGMENT);
                    mFragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
                }
            });

同时使用setTransition作为开放,并让我知道它是否有效。


1
实际上,我建议您从Java中添加SupportMapFragment,而不是直接在XML布局文件中添加它,这样会起作用。 - Anuj
帮助您根据自己的意愿提供时间和处理来加载片段。 - Anuj
那有助于添加片段,但仍然存在同样的问题,当删除该片段时。 - elmorabea
你是否使用过 getSupportFragmentManager().popBackStackImmediate(BK_STK_SUPPORT_MAP_FRAGMENT, FragmentManager.POP_BACK_STACK_INCLUSIVE); 来弹出你的碎片? - Anuj
很抱歉,问题仍然存在,即使现在开始闪烁,我已将其更改为单独的活动。 - elmorabea

0
加载地图后,即在地图片段的onActivityCreated()方法中,您应该调用以下方法。
private void setMapTransparent(ViewGroup group) {
    int childCount = group.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View child = group.getChildAt(i);
        if (child instanceof ViewGroup) {
            setMapTransparent((ViewGroup) child);
        } else {
             child.setBackgroundColor(0x00000000);
        }
    }
}

作为

setMapTransparent((ViewGroup) fragment.getView());

你的fragment应该是mapFragment。希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接