恢复后地图片段变黑

5

我有一个应用程序,在其主屏幕上有一个带按钮的地图(v2)。点击这些按钮会运行另一个应用程序,并使其(主活动)保留在堆栈中。在调用另一个活动后,使用 finish(),主活动回到前台。但是此后,地图片段变成了黑色,无法正常工作。

enter image description here

这是我的片段 XML:

<fragment
    android:id="@+id/mapFragment"
    android:layout_width="100px"
    android:layout_height="100px"
    class="com.google.android.gms.maps.MapFragment" />

我现在只是做了这个操作:setContentView(R.layout.new_main); 没有进行其他操作。

我的问题几乎就像这个问题: Android MapView v2 Black screen,也没有得到答案。


嘿,你得到答案了吗? - Niranj Patel
没有,目前还没有任何进展……但这个问题已经被记录在https://code.google.com/p/gmaps-api-issues/issues/detail?id=5767。 - Tunerx
4个回答

5
请使用以下提供的代码进行尝试:
@Override
public void onResume() {
    super.onResume();
    mapFragment.onResume();
}

嗯...如果mapFragment为空怎么办? - wonsuc

3

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

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

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

Android的硬件加速是一种改善UI性能的技术。它通过在GPU上执行绘图操作来取代CPU执行绘图操作,从而提高应用程序的帧速率并减少响应时间。硬件加速可以自动启用,并且适用于大多数应用程序和UI元素。但有些情况下需要手动禁用硬件加速,例如某些自定义视图和特定版本的ROM等。

首先,如果您的地图位于ScrollView内部,则在滚动时会出现黑色边框。其次,这对我来说并没有解决问题。 - Kostya Mistery

0

我认为我有一个与一周前完全相同的问题。当mapfragment被销毁时,它会调用onDestroyView()。

@Override
public void onDestroyView() {

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

当地图片段再次出现时,这是代码:

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();
}

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

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


对我来说,在真实设备上也无法工作。现在当我想要重新打开带有地图的活动时,它将被创建为新的活动。这是非常糟糕的解决方案,但我没有找到更好的方法。如果您找到了更好的方法,请写下来...谢谢。 - Tunerx

0

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

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

顺便说一下,我在xml中使用了FrameLayout来支持SupportMapFragment


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