To make that more explicit:

Person1 me = new Person1(this);

and later...

      public Person1(Context context) {
                super();
                this.Id =
(context.getResources().getString(R.string.def_id));
                Log.v("person construct", "after getResources..." +
this.Id);
        }

Peli


On Sep 24, 10:01 am, hackbod <[EMAIL PROTECTED]> wrote:
> You need to hand your Context (Activity is-a Context) to the other
> class, which is uses to access resources.
>
> On Sep 23, 6:35 pm, gymshoe <[EMAIL PROTECTED]> wrote:
>
> > I am having trouble accessing my XML resources from outside my main
> > activity. I suspect this is easy to do, but I am a novice to android/
> > java and this is driving me crazy.
>
> > I want to declare a class so it is not nested, but rather public to
> > all other classes in my program. However, when I create this class, I
> > cannot access the XML resources, like I could in my main Activity.
> > While "getString(R.string.def_id)" works fine in my main Activity, if
> > I try this in my non-main class, Eclipse tells me "getString" is not
> > defined for this class.  I tried using
> > "getResources().getString(R.string.def_id)" but it said getResources()
> > cannot be resolved".  I even created a dummy ContextWrapper so I could
> > access resources that way:
> > ContextWrapper context = new ContextWrapper(null);
> > this.setId(context.getResources().getString(R.string.def_id), true);
> > When I do this, the contextWrapper is created OK, but I get a null
> > pointer exception thrown at the second line
> > ("this.setId(context...").
>
> > I have looked for similar problems on the web and forums but to no
> > avail. Somebody posted that they were unable to use their resources in
> > the initialization block of their main Activity, and could only use
> > them in (or after) their onCreate() method where they worked fine.  I
> > suspect this is part of the same problem, but there was no solution
> > posted to that thread...
>
> > Any help would be greatly appreciated.  Full code below:
>
> > This works:
>
> > DEFAULTS.XML:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <resources>
> >         <string name="def_id">007</string>
> > </resources>
>
> > RESOURCEQUESTION.JAVA:
> > package com.northwestradiology.com;
>
> > import android.app.ListActivity;
> > import android.os.Bundle;
> > import android.util.Log;
>
> > public class ResourceQuestion extends ListActivity  {
> >     /** Called when the activity is first created. */
> >     @Override
> >     public void onCreate(Bundle savedInstanceState) {
> >         super.onCreate(savedInstanceState);
> >                 Log.v("onCreate", "entering on create");
> >                 Person1 me = new Person1();
> >                 Log.v("onCreate", "def_id = " + getString(R.string.def_id));
>
> >     }
>
> > }
>
> > PERSON1.JAVA
> > package com.northwestradiology.com;
>
> > public class Person1 {
> >         public String Id;
> >         public Person1() {
> >                 super();
> >         }
>
> > }
>
> > -------------------------------
>
> > This doesn't work:
>
> > DEFAULTS.XML:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <resources>
> >         <string name="def_id">007</string>
> > </resources>
>
> > RESOURCEQUESTION.JAVA
> > package com.northwestradiology.com;
>
> > import android.app.ListActivity;
> > import android.os.Bundle;
> > import android.util.Log;
>
> > public class ResourceQuestion extends ListActivity  {
> >     /** Called when the activity is first created. */
> >     @Override
> >     public void onCreate(Bundle savedInstanceState) {
> >         super.onCreate(savedInstanceState);
> >                 Log.v("onCreate", "entering on create");
> >                 Person1 me = new Person1();
> >     }
>
> > }
>
> > PERSON1.JAVA
> > package com.northwestradiology.com;
>
> > import android.content.ContextWrapper;
> > import android.util.Log;
>
> > public class Person1 {
> >         public String Id;
> >         public Person1() {
> >                 super();
> >                 ContextWrapper context = new ContextWrapper(null);
> >                 Log.v("person construct", "after context wrapper...");
> >                 this.Id = 
> > (context.getResources().getString(R.string.def_id));
> >                 Log.v("person construct", "after getResources...");
>
> >         }
>
> > }
>
> > ERROR LOG:
> > 09-24 01:28:56.985: VERBOSE/onCreate(2789): entering on create
>
> > 09-24 01:28:56.985: VERBOSE/person construct(2789): after context
> > wrapper...
>
> > 09-24 01:28:56.985: DEBUG/AndroidRuntime(2789): Shutting down VM
>
> > 09-24 01:28:56.997: WARN/dalvikvm(2789): threadid=3: thread exiting
> > with uncaught exception (group=0x40010e28)
> > 09-24 01:28:56.997: ERROR/AndroidRuntime(2789): Uncaught handler:
> > thread main exiting due to uncaught exception
>
> > 09-24 01:28:57.007: ERROR/AndroidRuntime(2789):
> > java.lang.RuntimeException: Unable to start activity
> > ComponentInfo{com.northwestradiology.com/
> > com.northwestradiology.com.ResourceQuestion}:
> > java.lang.NullPointerException
>
> > etc...
>
> > Thanks,
> > Jim
--~--~---------~--~----~------------~-------~--~----~
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