1

Ich verwende MapView in einem Fragment. Jetzt lädt es nicht. (Oder um genau zu sein, lädt es aber nicht geladen werden. Ja, es ist seltsam, Bilder beigefügt.)MapView wird nicht ordnungsgemäß innerhalb des Fragments geladen. Seltsames Verhalten bei Google PLay-Diensten 9.4.0

Einige Protokolle auf Konsole, wenn Kartenlasten (oder nicht geladen werden kann/versucht, laden zu)

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/[email protected]@[email protected][email protected]@[email protected][email protected]' 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 
Hier

ist der Code:

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

Und auf MapReady, ich dies tun:

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

die Karte ist nicht einmal geladen. Wenn ich darauf klicke. Nach einigen Sekunden zeigt es plötzlich gezoomt an, reagiert jedoch nicht auf eine Benutzerinteraktion. Nichts passiert, wenn ich es klicke, klicke es zoomen. Wenn ich jetzt ein SUPPORT MAP FRAGMENT verwende, lädt es sofort und perfekt. Also, MEIN API SCHLÜSSEL IST RICHTIG UND INTERNET IST PERFEKT FEIN. Aber MAP-Ansicht in das Fragment funktioniert nicht.

Ich habe auch diesen Link und die Protokolle sind die gleichen wie ich erhalte: Here

Manchmal, wenn ich auf sie halten klicken, sagen 10 20 mal, dann nach wenigen Sekunden nur ein Teil der Karte sichtbar ist. Aber immer noch keine Benutzerinteraktion. Nichts passiert, egal was ich mache.

sind nun hier die Screenshots auf der MapView:

This is when fragment loads.

enter image description here

enter image description here

Bitte helfen Sie mir, kann mir jemand sagen, ob es ein Fehler auf meiner Seite oder einem echten Fehler in Androids Mapview. Hat jemand die Möglichkeit, MapView-Insider-Fragment mit den neuesten Google Play-Diensten zu verwenden?

Bitte helfen Sie mir, ich bin fest.

Dank

Antwort

0

Wie in MapView erwähnt,

Nutzer dieser Klasse müssen alle Lebenszyklus-Methoden aus der Activity oder Fragment mit diesem Blick auf die entsprechenden in dieser Klasse übermitteln.

Sie auf den folgenden Methoden weiterleiten muss:

  • onCreate (Bundle)
  • onResume()
  • onPause()
  • onDestroy()
  • onSaveInstanceState()
  • onLowMemory()

Beispiel: Sie müssen die Methode onResume() von der entsprechenden Methode der übergeordneten Aktivität/des Fragments aufrufen.

Versuchen Sie, den Code wie in diesem SO-Post - MapView (android maps api v2) inside fragment layout doesnt show angegeben hinzuzufügen.