Как получить строковый ресурс из класса?
Хочу сделать локализацию, для этого нужно достать текст из ресурсов. Но как это сделать внутри класса без context'а?
enum class Tab(val id: Int, val title: String) {
TODAY(0, "Today"), ALL(1, "All time");
companion object {
fun getById(id: Int) = values().first { v -> v.id == id }
}
}
Ответы (1 шт):
Автор решения: Виктор Шамрук
→ Ссылка
Нашел решение здесь (для Java)
Создаем класс наследуясь от android.app.Application:
public class App extends Application {
private static App instance;
public static App get() { return instance; }
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
}
Затем идем в Manifest и в теге добавляем
android:name=".App"
В нужном классе перед getString() ставим App.get():
App.get().getString()
Для Kotlin можно так (в App):
companion object {
lateinit var instance: App
private set
}
override fun onCreate() {
super.onCreate()
instance = this
}
И потом в нужном месте:
App.instance.getString(R.string.Today)