Reputation: 1868
In my Java class I want to use a string resource from strings.xml.
For that I want to use something like this:
getString(R.string.address)
If my class is an activity then it's working.
But how can I use it if my class is a simple Java class?
Upvotes: 36
Views: 50480
Reputation: 4446
A class does not have a context and to use a string resource a context is needed. So just call the class from an activity and give a parameter context
and within your class constructor just use that context to get the string resource.
In your custom class you need to import the R namespace for the project to get the resource Id.
import com.myrandomapp.R;
Then to get the actual string
context.getString(R.string.COOL_STRING)
Upvotes: 52
Reputation: 143
You could done if you add this line:
// this is the object itself, and idString is the ID String bound to the literal.
this.getString(R.string.idString)
I hope this comment helps you!
Brs.
Upvotes: -1
Reputation: 1504
You can create a static Application Context
in your custom Application
class
public class App extends Application{
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
}
public static Context getContext(){
return mContext;
}
}
Then you just need to call App.getContext().getResources()
to get any resource values.
Just remember that this Context
is Application
type, so there are things that this Context
is not good to use. Read this for further info.
Upvotes: 13
Reputation: 67286
You can pass the context of the Activity class to the java class and access the resources.
From your Activity Class
Helper helper = new Helper(this);
Your Java class
public class Helper {
Helper(Context c){
c.getString(R.string.address);
}
}
Upvotes: 17