Ich habe Probleme beim Aufblasen eines Mapbox-MapViews auf einem Android-Fragment. Wenn ich denselben Code für eine Aktivität verwende (abgesehen von Standardunterschieden zwischen einer Aktivität und einem Fragment), kann ich MapView korrekt laden, aber nicht auf das Fragment.
Mapbox hat auch eine MapFragment-Klasse hier , aber ich bin mir nicht sicher, wie ich das in einem Fragment richtig anwenden kann (das Beispiel ist immer noch) in einer Aktivität); Mit dem Google Maps API kann ich MapView problemlos auf ein Fragment anwenden.
Die folgende logcat Zeile von:
%Vor%bezieht sich auf die Java-Zeile:
%Vor%Hier ist der relevante Code für dieses Problem zusammen mit dem Protokoll:
fragment_map.xml:
%Vor%FragmentMap.java:
%Vor%logcat:
%Vor%App grandle:
%Vor%Projektstruktur:
Diese Bibliothek sieht in einem schweren Entwicklungsstatus aus und hat möglicherweise einige Probleme, die auf GitHub erwähnt werden, besonders wenn Sie Version 2.2.0 ausführen.
Versuchen Sie, die Version auf den neuesten Stand zu ändern:
%Vor%Sie erzählen von Inflation, aber schauen Sie sich Stack-Trace an:
Erstellt von: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [DexPathList [[zip-Datei "/data/app/com.example.exampleapp-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, / system / lib]]] konnte "libmapbox-gl.so" nicht finden um java.lang.Runtime.loadLibrary (Laufzeit.java:366) um java.lang.System.loadLibrary (System.java:988) um com.mapbox.mapboxsdk.views.NativeMapView. (NativeMapView.java:42) unter com.mapbox.mapboxsdk.views.MapView.initialize (MapView.java:680) um com.mapbox.mapboxsdk.views.MapView. (MapView.java:621)
BTW:
zuerst
Sie müssen entscheiden, ob Sie die Ansicht jedes Mal aktualisieren {lokale Variable) oder ob Sie sie erneut verwenden (globale Variable)
Beispiel:
%Vor%Sekunde:
rufen Sie keine Aktivitäten oder Fragmentmethoden wie OnCreate onPause manuell auf (die von os verwendeten, um den Lebenszyklus zu erhalten)
dritte:
Wenn Sie viewpager und verschachtelte Fragmente verwenden, müssen Sie einen Adapter mit einem untergeordneten Fragmentmanager erstellen
mehr & amp; mehr:
Beachten Sie, dass zum Festlegen einiger Daten und Eigenschaften im untergeordneten Fragment das viewpager-Fragment
angelegt werden muss%Vor%"Erstens: Ich pushe es jedes Mal, was normalerweise kein Problem ist (meine Tabs funktionieren mit jedem anderen Fragment, das ich erstellt habe, einschließlich Google Maps, nur nicht Mapbox) Zweitens: Ja, du rufst Aktivität an Lifecycle-Methoden manuell Sie müssen OnCreate verwenden, um eine Ansicht aufzublasen Drittens: Ich habe einen Adapter, ich habe ihn hier einfach nicht eingefügt Das ist nicht das Problem, meine Tabs funktionieren gut mit jedem anderen Fragment, das ich erstellt habe bin mir nicht sicher, was du sagst, aber meine Fragmente funktionieren gut in meinen anderen Tabs.
Bitte konzentrieren Sie sich auf das vorliegende Problem ... setzen Sie eine Mapbox-Ansicht in ein Fragment, & gt; unabhängig davon, wo sich dieses Fragment befindet (Tab PageViewer oder nicht). - TangoJLabs "
verschiebe dies von onCreate von fragment in onViewCreated (View, Bundle)
%Vor%letztes Wort: Gradle-Dateien
Ich weiß nicht, ob Ihr Dateiinhalt sowohl Gradle-Dateien als auch nur App-Dateien enthält, aber diese Zeilen sollten nicht in der App-Gradle-Datei enthalten sein - das sind Toplevel:
%Vor%und du solltest überlegen, auf das neueste Android-App-Plugin zu wechseln - aber ich sehe, dass du gms-Dienste verwendest - so dass deine Top-Gradle-Datei ein anderes Plugin enthält und die obigen weggelassen werden
%Vor%Ich habe Probleme, der Logik Ihrer Änderungen zu folgen. Ich habe kein onCreate, von dem ich etwas bewegen kann
btw ich habe mehr Bedenken über den Rest der Lifecycle-Methoden - Fragment könnte oder nicht beibehalten Zustand so einfache Putting-Aktivität Lifecycle-Methoden in Fragment-Methode könnte mehr Probleme erzeugen :)
ich benutze nicht & amp; kenne die Quellimplementierung von MapView, also kann ich dir nicht sagen, wie man das implementiert, aber ich kann dir einen Hinweis geben, ob Fragment an Aktivität angehängt ist, bevor du irgendeine mapview-Methode aufruft
@ ceph3us -1 alles, was darin erwähnt wird, ist falsch und deine Grammatik Kann verbessert werden. Ich habe keine Antwort darauf, ich bin hier mit der selbe Frage. 1. Wurzelansicht sollte kein Feld sein, sollte es sein bei jedem Aufruf von onCreateView aufgeblasen, 2. sind die richtigen Aufrufe, 3. und der Rest ist off-Thema und nicht hilfreich für das Thema. - HaydenKai
@HaydenKai
Tags und Links java android xml android-fragments mapbox