恢复后地图片段为黑色

Posted

技术标签:

【中文标题】恢复后地图片段为黑色【英文标题】:Map fragment is black after resume 【发布时间】:2013-08-22 05:46:52 【问题描述】:

我的应用程序在她的主屏幕地图 (v2) 上有按钮。单击后这些按钮运行另一个应用程序,并且此(主要活动)在堆栈中。在那之后,另一个活动被称为finish(),主要活动又回到了前面。但在此之后,地图片段是 黑色 并且无法正常工作。

这是我的片段 XML:

<fragment
    android:id="@+id/mapFragment"
    android:layout_
    android:layout_
    class="com.google.android.gms.maps.MapFragment" />

而我唯一要做的就是setContentView(R.layout.new_main);,仅此而已。

这个问题和我的差不多:Android MapView v2 Black screen,也没有答案。

【问题讨论】:

嘿..你得到答案了吗?? 不,还没有...但是这个问题是已知的code.google.com/p/gmaps-api-issues/issues/detail?id=5767 【参考方案1】:

请尝试使用下面给出的代码:

@Override
public void onResume() 
    super.onResume();
    mapFragment.onResume();

【讨论】:

hmm...如果mapFragment 为空怎么办?【参考方案2】:

我在文件 manifest.xml 中禁用了硬件加速,并且我的应用程序在第二次加载时不再显示黑色地图。我在模拟器里试试。

<application android:hardwareAccelerated="false">
 ...
</application

来自这篇文章:http://developer.android.com/guide/topics/graphics/hardware-accel.html

【讨论】:

首先,如果您的地图在 ScrollView 内,您会在 ScrollView 上出现黑色边框,其次,对我来说没有解决问题。【参考方案3】:

我认为一周以来我遇到了完全相同的问题。 当mapfragment被销毁时,调用onDestroyView()

@Override
public void onDestroyView() 

    super.onDestroyView();
    SupportMapFragment fragment = ((SupportMapFragment) getFragmentManager()
            .findFragmentById(R.id.map));
    if (fragment != null)
        getFragmentManager().beginTransaction().remove(fragment).commit();

当mapFragment要再次出现时,就是这个代码:

private void showFragment(final Fragment fragment) 
    if (fragment == null)
        return;

    final FragmentManager fm = getSupportFragmentManager();
    final FragmentTransaction ft = fm.beginTransaction();
    // We can also animate the changing of fragment
    ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

    ft.replace(R.id.address_displayer, fragment);
    ft.addToBackStack(null);

    ft.commit();

应用程序没有崩溃,但地图是黑色的,仍然有缩放光标和用于获取设备当前位置的图标;

也许很重要,我正在使用模拟器。

【讨论】:

对我来说,它也不适用于真实设备。现在,当我想用​​地图重新打开活动时,它将被创建为新的。这是非常糟糕的解决方案,但我没有找到更好的解决方案。当你找到一些东西时,请写一些关于它的东西......谢谢【参考方案4】:

我的理由真的很愚蠢。 我从xml 中删除了background 属性。

android:background="@android:color/black"

附言。我在xml 中使用FrameLayoutSupportMapFragment

【讨论】:

以上是关于恢复后地图片段为黑色的主要内容,如果未能解决你的问题,请参考以下文章

《使命召唤15:黑色行动4》公布最新地图

nativescript-mapbox 显示黑色地图标记

恢复片段后android地图停止响应

状态栏在全屏对话框片段android中将其颜色更改为黑色

FBO 的延迟着色器纹理显示为黑色

将按钮的文本颜色从黑色更改为白色,然后恢复