Я новичок в Android и Kotlin. Я пытаюсь создать ResourcesHelper class
для легкого доступа к моим пользовательским цветам и шрифтам из любого другого пользовательского класса в моем приложении. Но в этом помощнике у меня нет контекста. Я читал способы получения контекста, расширяющего класс Application, но затем компилятор говорит, что я не могу получить доступ к этому контексту в моем объекте-компаньоне ResourcesHelper, так как это приведет к утечкам памяти. Кроме того, я закончил с дополнительной цепочкой.
Вот как я хотел бы использовать его:
class ResourcesHelper {
companion object {
val lightBlue = resources.getColor(R.color.lightBlue)
val customBlue = resources.getColor(R.color.customBlue)
// [...]
val fontAwesome = resources.getFont(R.font.fontawesome)
val lemonMilk = resources.getFont(R.font.lemonmilk)
}
}
enum class ButtonStyle {
MENU,
// [...]
VICTORY
}
class CustomButton(c: Context, attrs: AttributeSet) : Button(c, attrs) {
var isButtonActivated = false
fun setStyle(style: ButtonStyle) {
setBackgroundColor(ResourcesHelper.transparent)
when(style) {
ButtonStyle.MENU -> {
setText(R.string.menu_button)
typeface = ResourcesHelper.lemonMilk
setBackgroundColor(ResourcesHelper.customRed)
setTextColor(ResourcesHelper.white)
}
// [...]
ButtonStyle.VICTORY -> {
setText(R.string.victory_button)
typeface = ResourcesHelper.lemonMilk
setBackgroundColor(ResourcesHelper.customRed)
setTextColor(ResourcesHelper.white)
}
}
}
}
Я также читал этот пост Доступ Android к ресурсам вне деятельности , но это на Java, и я понятия не имею, как это сделать в Kotlin.
Я полностью растерялся, что и как это сделать ... Или, если есть лучший способ добиться достижения ресурсов из любого места.
Спасибо за вашу помощь