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

Reply via email to