Редактировать: Тем не менее, это может привести к утечке памяти, когда ваш фрагмент будет воссоздан.20 setonclicklisteners?посчитайте меня, я нашел еще один метод с ресурсами.
Редактировать: Эти данные должны храниться во фрагменте, так как он требует ссылки на представление.Следовательно, данные представления не должны храниться в другом классе или в перечислении.Тем не менее, другой класс по-прежнему является хорошим вариантом для хранения статических переменных, которые не будут меняться (например, ссылки из целого числа в строку).Когда представление воссоздается, вам потребуется преобразовать любые внесенные изменения ... еще больше усложнить ваш код.это кажется непрактичным для тех нескольких строк, которые вы «сохранили». Один из вариантов - не редактировать предыдущие данные и просто не использовать предыдущие представления, которые были инкапсулированы, тем не менее позволяя вам сохранить несколько строк для настройки прослушивателей щелчков.
Я прибег кследующее решение:
Создайте отдельный класс Days с вложенным классом Day, который выглядит следующим образом:
class Days {
val mon: Day = Day(2, null)
val tue: Day = Day(3, null)
val wed: Day = Day(4, null)
val thurs: Day = Day(5, null)
val fri: Day = Day(6, null)
val sat: Day = Day(7, null)
val sun: Day = Day(1, null)
data class Day(val num:Int, var editText: EditText?)
}
Затем в своей работе я его создаю:
private val days: Days = Days()
Затем ссылаться на это так:
days.mon.editText = mon
days.tue.editText = tue
days.wed.editText = wed
days.thurs.editText = thurs
days.fri.editText = fri
days.sat.editText = sat
days.sun.editText = sun
Таким образом, поскольку он не является статичным, как перечисление, он собирает мусор вместе с действием.
В случае, если выМне было интересно, контекст этого вопроса был создан для того, чтобы перебрать enum (теперь объект).Это достижимо через это в моем объекте Дней:
val days: Array<Day> = arrayOf(mon, tue, wed, thurs, fri, sat, sun)