Unfortunately, the only way you can access any of the string resources is with a Context (i.e. an Activity
or Service
). What I've usually done in this case, is to simply require the caller to pass in the context.
You can use only system resources only without Context:
Resources.getSystem().getString(android.R.string.somecommonstuff)
try below solutions
- Create a subclass of
Application
, for instance public class App extends Application
{
- Set the android:name attribute of your
<application>
tag in the AndroidManifest.xml
to point to your new class, e.g. android:name=".App"
- In the
onCreate()
method of your app instance, save your context
(e.g. this) to a static field named mContext
and create a static method that returns this field, e.g. getContext():
This is how it should look:
public class App extends Application{
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
}
public static Context getContext(){
return mContext;
}
}
Now you can use: App.getContext()
whenever you want to get a context, and then getResources()
(or App.getContext().getResources())
.
private static Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.baseUrl(App.getContext().getResources().getString(R.string.YOUR_STRING);)
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient
().create()));