Лучший подход
App.getRes().getString(R.string.some_id)
Будет работать везде (Utils, Models также).
Я прочитал все ответы, всеответы могут сделать вашу работу.
- Вы можете использовать
getString(R.string.some_string_id)
в обоих Activity
или Fragment
. - Вы можете использовать
Context.getString(R.string.some_string_id)
гдеу вас нет прямого доступа к getString()
методу.Например, Dialog
.
Проблема
Когда у вас нет Context
доступа , как метод в вашем Util
классе.
Предположим, метод ниже без контекста.
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
Теперь вы передадите Context
в качестве параметра в этом методе и будете использовать getString().
public void someMethod(Context context){
...
context.getString(R.string.some_id);
}
Чтоя делаю это
public void someMethod(){
...
App.getAppResources().getString(R.string.some_id)
}
Что?Его очень просто использовать в любом месте вашего приложения!
Итак, вот решение , с помощью которого вы можете получить доступ к ресурсам из любого места, например Util class
.
import android.app.Application;
import android.content.res.Resources;
public class App extends Application {
private static Resources resources;
@Override
public void onCreate() {
super.onCreate();
resources = getResources();
}
public static Resources getAppResources() {
return resources;
}
}
Добавьте поле имени в свой тег manifest.xml
<application
.
<application
android:name=".App"
...
>
...
</application>
Теперь все готово.Используйте App.getAppResources().getString(R.string.some_id)
в любом месте приложения.