Mapbox Ansicht auf Fragment aufblasen

8

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:

    
Feedslant 07.01.2016, 22:54
quelle

2 Antworten

1

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%     
Damian Kozlak 07.01.2016 23:44
quelle
1

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
  

"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 "

%Vor%

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

  

Ich habe Probleme, der Logik Ihrer Änderungen zu folgen. Ich habe kein onCreate, von dem ich etwas bewegen kann

%Vor%

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

  1. Bitte geben Sie zuerst die QUELLEN für Ihre Beratungen an
  2. Warum möchten Sie die Ansicht neu erstellen? Zweck? Ressourcen zu verschwenden (wie Ihre Zeit, um CPU und MEM zu programmieren und zu programmieren)? - dort, wo du es dir leisten kannst oder einen frischen brauchst, dann ist es in Ordnung, aber in anderen Fällen WIEDERVERWENDUNG !!!
  3. die Ansicht muss überhaupt nicht aufgeblasen werden, sie kann normalerweise erzeugt werden, zB durch Rückgabe von new LinearLayout (Context) oder FrameLayout oder einer anderen komplexen Ansicht - dies ist eine Entwicklerwahl für die Verwendung von XML oder Java - ich bevorzuge es nicht benutze xml - ich mag reines JAVA :)
  4. also ganz am Ende kann ich sagen, dein -1 ist leer für mich ihr

    
ceph3us 09.01.2016 02:46
quelle