зависящее от локализации приложения. Т.е. нужно вывести строку из ресурсов.
Для получения строки по ресурсу можно юзать что-то типа ResourceManager (кажется в гитфоксе такое было).
На сколько вообще правильно обращаться к "R" классу внутри Presenter|ViewModel? Или может есть другие подходы для вывода сообщений из ресурсов?
Вроде как бы ничего страшного нет, но выглядит так, как будто не должно так выглядеть.
Мне кажется, когда есть ощущение "вроде неправильно", но вы не можете это аргументировать, это признак, что вы переабстрагировались) По вашему вопросу я бы сказал, что если презентеры у вас не мультиплатформенные, то обращайтесь спокойно. Я видел на гитхабе абстракцию над R.id, который на каждый id генерировал метод обращения к этой строке, но это, по мне, оверкилл.
1. Presenter/viewmodel не должны ничего знать о UI составляющей, строки не исключение - это прерогатива View. Значит необходимо делать интерфейс у view, который будет эти данные передавать. Сама же локализация в Андроиде предусмотрена, строки задаются в ресурсах по каждому языку и подтягиваются в зависимости от выставленной локали. Соответственно при переключении языка в приложении нужно выставить соответствующую локаль и приложение само подтянет текст на нужном языке.
Тут главное без фанатизма. Одно из правил которым все должны руководствоваться - архитектура должна помогать в разработке, а не вставлять палки в колёса. Да, можно использовать какой-нибудь ресурс провайдер и из вью модели использовать R. И в этом не будет ничего криминального. Но если вы разрабатываете кроссплатформенно, где у вас вью модель или презентор является общим кодом, например на xamarin, то тут это не сработает. Тут придется использовать интерфейс с константами строк (ключи), и реализовать интерфейс для каждой платформы. Так чтобы реализация знала как предоставить строку по выбранному ключу.
Обсуждают сегодня