hi, thanks for your answer :) On Jan 5, 11:30 pm, TreKing <treking...@gmail.com> wrote: > OK, well your main problem is that while you implemented the Parcelable > class, you didn't implement the writeToParcel method or the constructor that > takes a Parcel. That's the key. >
in one other class of my app i has implement the parcelable to, but there i mustnt implement these methods. i dont know why but it works. this other class is my "SaveHelper" class (its like a singleton - i only have one object), where i save my track/route... and i test it: i walk around my block and i rotate the handy several times (==>recreation of my activity..). and after saving my gpx file i see, that ALL points are saved. > You need to implement the first method to save all you state information > (i.e., your member variables) to the Parcel object. > Then implement the constructor to restore your instance state from the > incoming Parcel object. I override my Overlay object, how you can see in my code and because of that i would only get the last overlay back?!?! I think you mean, that i do following: @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeInt( (int)gp1.getLatitude()); //something like that } and private TrackOverlay(Parcel in) { gp1.setLatitude(in.readInt()); } but the onSaveInstanceState will only be called, if i pause the activity?! So i can only save the last to (TrackOverlay) object?!?! Or if i implement these methods i save all my Overlays?!? > > Then in your MapActivity onSavedInstanceState, iterate through all of your > Overlays and shove them into an array you can store in the Bundle. > In onRestoreInstanceState, get a list of Parcelables from the Bundle and > re-create all of your Overlays (using the constructor that takes a Parcel). Perhaps it is easier to save all GeoPoints in a list and in onSaveInstanceState() i iterate through that list and save all GeoPoints in a "int [] lat" and "int [] lon" array and put it to my bundle and in onRestoreInstanceState i read this arrays and iterate through these arrays and draw the Overlays again, like: gp1.setLatitude(lat[0]); ..... for(int i= 1; i< lat.length; i++) { gp2 = gp1; gp1.setLatitude(..) ... newOverlay = new TrackOverlay(gp1, gp2, MODUS); map.getOverlays().add(newOverlay); } map.ivalidate(); But what is more efficient and/or more elegant ? > > Other bit of advise: get rid of that "if (first) { /*initialze*/}" code. Set > up your MyLocationOverlay object in onCreate. If you need to have a starting > location while you wait for the first update, use getLastKnownLocation(). > Yes, this is not the best solution and i will optimize it soon :) > I hope that makes sense and helps some. Thanks for your detailed answer. Stefan
-- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en