MapView无法在片段内正确加载。谷歌PLay服务9.4.0上的奇怪行为

时间:2016-08-02 06:10:57

标签: android google-maps android-fragments google-play-services android-mapview

我在片段中使用MapView。现在它没有加载。 (或者确切地说,它会加载,但不会加载。是的,它很奇怪,附带图片。)

映射加载时某些日志在控制台上(或无法加载/尝试加载)

 W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
 I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:1
 I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 1
 D/ChimeraFileApk: Primary ABI of requesting process is armeabi-v7a
 I/art: DexFile_isDexOptNeeded failed to open oat file '/data/dalvik-cache/arm/data@data@com.google.android.gms@app_chimera@m@00000006@DynamiteModulesA_GmsCore_prodlmp_xxhdpi_release.apk@classes.dex' for file location '/data/data/com.google.android.gms/app_chimera/m/00000006/DynamiteModulesA_GmsCore_prodlmp_xxhdpi_release.apk': Failed to open oat filename for reading: No such file or directory
 D/ChimeraFileApk: Classloading successful. Optimized code found.
 D/GoogleCertificates: com.google.android.gms.googlecertificates module is loaded
 Fetched 163 Google release certificates
 Fetched 318 Google certificates
 D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN

以下是代码:

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

  View view = inflater.inflate(R.layout.fragment_home, container, false);


    mapView = (MapView) view.findViewById(R.id.mapview);
    // Gets the MapView from the XML layout and creates it
    mapView.onCreate(savedInstanceState);

    // Gets to GoogleMap from the MapView and does initialization stuff
    mapView.getMapAsync(this);
}

在MapReady上,我这样做:

@Override
public void onMapReady(GoogleMap googleMap) {
    map = googleMap;
    map.getUiSettings().setMyLocationButtonEnabled(true);
    map.getUiSettings().setAllGesturesEnabled(true);
    map.setMyLocationEnabled(true);

    // Needs to call MapsInitializer before doing any CameraUpdateFactory calls
    try {
        MapsInitializer.initialize(this.getActivity());
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Updates the location and zoom of the MapView
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(43.1, -87.9), 10);
    map.animateCamera(cameraUpdate);
}

地图甚至没有加载。当我一直点击它。然后几秒后它突然开始显示缩放,但不响应任何用户交互。没有任何反应是我点击它捏缩放它。 现在,当我使用SUPPORT MAP FRAGMENT时,它会立即完美加载。所以,我的API密钥是正确的,互联网是完美的。 但是片段中的MAP视图不起作用。

我还检查了这个链接,日志和我一样:Here

有时当我一直点击它时,说10次,然后几秒后,只有部分地图可见。但仍然没有用户互动。无论我做什么,都没有任何事情发生。

现在这里是MapView的截图:

This is when fragment loads.

enter image description here

enter image description here

请帮助我,任何人都可以告诉我,如果它是我身上的错误或Android的mapview上的真正错误。 有没有人能够在最新的Google Play服务中使用MapView内部片段?

请帮助我,我被困住了。

由于

1 个答案:

答案 0 :(得分:0)

MapView中所述,

  

此类的用户必须将包含此视图的ActivityFragment的所有生命周期方法转发到此类中的相应方法。

您必须转发以下方法:

  • 的onCreate(束)
  • 的onResume()
  • 的onPause()
  • 的onDestroy()
  • 的onSaveInstanceState()
  • onLowMemory()

例如,您必须从父Activity / Fragment的相应方法中调用onResume()方法。

尝试添加此SO帖子中提供的代码 - MapView (android maps api v2) inside fragment layout doesnt show