I hadn't looked closely at your SET method but you're being bitten by
the same problem. You're copying references, not data by doing it the
way you currently are. Try:

mGroups = new ArrayList<Group>(s);

Which will create a NEW ArrayList object containing everything that
your "s" arraylist contains.

Chris

On Apr 14, 9:43 am, Duskox <[email protected]> wrote:
> Ok I tried now, bumped into antoher error but that is not related to
> this problem.
>
> But I noiced that now that I initialize or better say instantiate this
> variable, array exists but is still empty, SET doesn't work. I guess
> that was the problem all along, my setGlobalArrayVariable method is
> not doing it's job :-/
>
> On Apr 14, 3:23 pm, Chris <[email protected]> wrote:
>
>
>
>
>
>
>
> > This isn't C++. :) In Java, a variable to an object is a
> > ReferenceType. It's kind of like a pointer in C++. So think of it this
> > way. If you created a pointer variable and passed it around without
> > actually making it POINT to something first, what would happen? You're
> > passing around a NULL pointer. You need to create an object first
> > which you're now doing in onCreate as you've said. Of course you don't
> > need to do this if your code is setup such that it ALWAYS calls SET
> > before GET. It's fine to do a lazy initialization like that I guess.
>
> > Chris
>
> > On Apr 14, 8:57 am, Duskox <[email protected]> wrote:
>
> > > Thanks that fixed it!
>
> > > I created override of OnCreate in my application class and declared a
> > > new ArrayList. The only thing then puzzles me is why I had to do it??
> > > I thought that it would automatically be filled with the object I
> > > created in my init function that is inside of the initial Activity
> > > class. I was thinking along the lines that this is like a pointer
> > > variable and then I set it with passing a pointer to my object. I
> > > guess it doesn't work that way :D
>
> > > Thanks again!!
>
> > > On Apr 14, 2:47 pm, Chris <[email protected]> wrote:
>
> > > > You never instantiate mGroups in your Application class so unless you
> > > > SET it before GETing it, it's going to be null.
>
> > > > Chris
>
> > > > On Apr 14, 8:31 am, Duskox <[email protected]> wrote:
>
> > > > > Hi all,
>
> > > > > so I searched the net and found a nice way to make a global variable
> > > > > by creating a class that extends Application class. I did that. But I
> > > > > am having problems with it. So this is the situation:
>
> > > > > public class Group {
> > > > >  public String mName;
> > > > >  public int mID;
> > > > >  public ArrayList<Items> mItems;
>
> > > > > }
>
> > > > > public class Item {
> > > > >  public String mName;
>
> > > > > }
>
> > > > > public class MyApplicationApp extends Application {
> > > > >  private ArrayList<Group> mGroups;
>
> > > > > public ArrayList<Group> getGlobalArrayVariable() {
> > > > >                 return mGroups;
> > > > >         }
>
> > > > >         public synchronized void 
> > > > > setGlobalArrayVariable(ArrayList<Group> s) {
> > > > >                 mGroups = s;
> > > > >         }
>
> > > > > }
>
> > > > > So these are the classes I believe are cruical for this question. Next
> > > > > this is that in my Activity classes I set and get this ArrayList
> > > > > variable. So I set it in my initial Activity class that is called when
> > > > > the application is run. There I fill the array and just to be sure I
> > > > > read it with Log functionality after filling the array in the
> > > > > MyApplicationApp class and everything is ok.
>
> > > > > Then I try to read this from another Activity class where I go to
> > > > > after a menu choice. In that activity I successfully read the
> > > > > application, meaning I get a handle to MyApplicationApp object (I
> > > > > guess). This is how I do it:
>
> > > > > ...
> > > > > private MyApplicationApp mMyApp;
> > > > > private ArrayList<Group> mGroupsList;
>
> > > > > protected void onCreate(Bundle savedInstanceState) {
> > > > >                 super.onCreate(savedInstanceState);
>
> > > > >                 mMyApp = (MyApplicationApp)this.getApplication();
> > > > >                 if (mMyApp == null) Log.i(TAG,"mMyApp == null");
>
> > > > >                 mGroupsList = 
> > > > > (ArrayList<Group>)mMyApp.getGlobalArrayVariable();
> > > > >                 if (mGroupsList == null) Log.i(TAG,"1. mGroupsList == 
> > > > > null");
>
> > > > >                 mGroupsList =
> > > > > ((MyApplicationApp)this.getApplication()).getGlobalArrayVariable();
> > > > >                 if (mGroupsList == null) Log.i(TAG,"2. mGroupsList == 
> > > > > null");
> > > > > ...
>
> > > > > So mMyApp is not null and that is fine I guess, but mGroupsList is
> > > > > null and I presume that is way my app crashes after this last log
> > > > > entry. I guess it crashes because my variable is null?? Anyway even if
> > > > > the reason for crashing is other then this variable being null I am
> > > > > still puzzled why am I not able to get my global variable in this
> > > > > way??
>
> > > > > The reason for two different ways of getting something into
> > > > > mGroupsList variable is because I was trying to see if I am doing it
> > > > > incorrectly but it is the same as far as I know...
>
> > > > > Any ideas or pointers what should I do?
>
> > > > > Thanks!
> > > > > D.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to