Overlays an MapView zurückgeben..!

B

BFK

Fortgeschrittenes Mitglied
11
Hallo,
ich versuche eine mapOverlay-List temporär zu speichern, so dass ich sie später nutzen kann. Das ganze soll nur dann passieren, wenn das Handy die Orientierung ändert, da ja dann alle Overlays verloren gehen.
Die Overlays werden in einer Klasse gespeichert. (sagen wir die heisst app)

Also desweiteren, ein paar Codestücke..:
Code:
MapView mapView;                                 // Google Maps    
List<Overlay> mapOverlays;
Ich übergebe diese Liste bei der onRetainConfigChanged-Methode ab an meiner app-Klasse weiter..:
Code:
@Override
    public void onConfigurationChanged(Configuration newConfig) 
    {
        app.setRotationVariable(true);
        app.setOverlay(mapOverlays);
        
    }
Und bei der onCreate-Methode, checke ich ob das Handy rotiert hat nehme so die richtigen Vorkehrungen..:
Code:
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
if(app.getRotationVariable() == true) // wenn handy von rotation kommt 
        {
            app.setRotationVariable(false);  
           
            mapView = (MapView) findViewById(R.id.mapview);
            mapView.setBuiltInZoomControls(true);
            
            mapOverlays = app.getOverlay();
        
            mapOverlays = mapView.getOverlays();
}
else
        {
            mapView = (MapView) findViewById(R.id.mapview);
            mapView.setBuiltInZoomControls(true);
          
            mapOverlays = mapView.getOverlays();
        }
}
Wenn das Handy seine Orientierung ändert, verliere ich trotzdem alle Overlays, obwohl ich ja mittels:
Code:
mapOverlays = app.getOverlay();
die Overlays wieder zurückgebe.
Dachte zuerst, dass null zurückgegeben wird, aber das war nicht der Fall (habe die Items in der Liste verglichen vor und nach der rotation, waren beide gleich).

Was mache ich falsch..?
Ich vermute mal ich habe da was vergessen..?

Wär für jeden Tip dankbar..!
 
sixi schrieb:
hast du configChanges im Manifest gesetzt?

Bei meinem Manifest unter der jeweiligen Activity steht folgendes..:

Code:
android:configChanges="keyboardHidden|orientation"

Also ja. Ich glaub ich bekäme ehe nen Compilerfehler wenn ich dass nicht getan hätte.
In meinem Falle bekomme ich aber keinen Fehler, nur alle meine Overlays gehen verloren.

Keine andere Idee..?
 
Moin,
onConfigurationChanged wird doch aufgerufen /nachdem/ sich die Config geändert hat, sonst würde das (Configuration newConfig) ja keinen Sinn machen.
Was du nun machst ist app.setOverlay(mapOverlays); eine leere Overlay zu geben, weil sich die Config ja schon geändert hat.

Du musst das Overlay speichern, bevor sich die Config ändert.
Dann kannst du in onConfigurationChanged deine Methoden zum setzen des Overlay aufrufen.

MfG
 
Hi,

Sentence schrieb:
Moin,
onConfigurationChanged wird doch aufgerufen /nachdem/ sich die Config geändert hat, sonst würde das (Configuration newConfig) ja keinen Sinn machen.

Nee, leider nicht, on ConfigChanged wird dann erst aufgerufen, wenn sich der Zustand des Teles ändern soll.
Ich habe Logs in 3 vers. Methoden hinzugefügt und zwar bei "onConfigurationChanged", "onDestroy" und in "onCreate".
Und der Compiler meldete folgende Reihenfolge..:
1. onConfigChanged
2. onDestroy
3. onCreate

Edit..:
Das einzig komische, wo du auch recht hast, ist, dass ich wirklichein leeres Overlay bei onCreate bekomme.
Bei Abfrage bei onConfigChanged ob mein overlay leer ist (mapOverlay.isEmpty) bekomme ich false, aber
bei onCreate bekomme ich true.

Aber wieso..?
Wie schon oben gesagt, ist ja die reihenfolge so, dass ich ja KEIN leeres Overlay der Klasse app übergebe.
 
Zuletzt bearbeitet:
Es hat sich rausgestellt, dass
Code:
mapOverlays = mapView.getOverlays();

alles wieder auf null setzt (ist ja auch logisch).
Also ohne dieser Zeile wird das Overlay korrekt wiedergegeben.

Allerdings wird immer noch nichts bei der Map gezeichnet und somit löst das mein Problem nicht.
 

Ähnliche Themen

FabianDev
Antworten
5
Aufrufe
561
swa00
swa00
Jansenwilson
Antworten
1
Aufrufe
762
swa00
swa00
D
Antworten
17
Aufrufe
409
datNeMo
D
Zurück
Oben Unten