Here is the sample code for passing Object references between
activities:

I have a class called ReferencePasser, which wraps a HashMap:

                import java.util.HashMap;

                /**
                 * @author Amos
                 * Maps Objects to keys.
                 * The keys are generated automatically on insertion (based on a
running index).
                 * Useful for passing references to objects.
                 */
                public class ReferencePasser {
                        private HashMap<Long, Object> _objects;
                        private long _nextKey;

                        public ReferencePasser() {
                                _objects = new HashMap<Long, Object>();
                                _nextKey = 1;
                        }

                        /**
                         * Adds the given object to the map.
                         * @param o
                         * @return the key of object inserted.
                         */
                        public long put(Object o) {
                                long key = _nextKey++;
                                _objects.put(Long.valueOf(key), o);
                                return key;
                        }

                        /**
                         * @param key
                         * @return the object with the given key, or null if 
key doesn't
exist in
                         * the map.
                         */
                        public Object get(long key) {
                                return _objects.get(Long.valueOf(key));
                        }

                        /**
                         * Removes the object mapped to the given key from the 
map.
                         * @param key
                         */
                        public void remove(long key) {
                                _objects.remove(Long.valueOf(key));
                        }
                }

Access to a single instance of ReferencePasser is achived through this
class:

                public class GlobalStuff {
                        private static ReferencePasser _passer;

                        /**
                         * Returns the application's ReferencePasser, which is 
useful for
passing
                         * references to complex objects between Activities 
and/or
Services.
                         * @return
                         */
                        public static ReferencePasser getReferencePasser() {
                                if (_passer == null)
                                        _passer = new ReferencePasser();
                                return _passer;
                        }
                }

Here's a sample for an activity that wants to send an object to
another activity:

                public class SourceActivity extends Activity {
                ...

                        private void startTargetActivity(SomeObject myObject) {
                                ReferencePasser passer = 
GlobalStuff.getReferencePasser();
                                long objectKey = passer.put(myObject);
                                Intent intent = new Intent(this, 
TargetActivity.class);
                                intent.putExtra("com.myapp.blabla", objectKey);
                                startActivity(intent);
                        }

                ...
                }

And here's how the called activity gets the object that was passed to
it:

                public class SourceActivity extends Activity {
                        protected void onCreate(Bundle icicle) {
                                //remember to handle null values, which I don't 
do here
                                long objectKey = 
getIntent().getLongExtra("com.myapp.blabla", 0);
                                ReferencePasser passer = 
GlobalStuff.getReferencePasser();
                                SomeObject passedObject = (SomeObject) 
passer.get(objectKey);
                                passer.remove(objectKey) //if I don't need the 
object reference
anymore

                                ...
                        }

                ...
                }

--~--~---------~--~----~------------~-------~--~----~
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
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to