Как добавить сеттер и геттер в переменные-члены класса Parcelable - PullRequest
0 голосов
/ 27 ноября 2018

Ниже приведен класс, над которым я сейчас работаю

@Parcelize
class Time(var hour:Int, var minute:Int):Comparable<Time>,Parcelable

Я хочу добавить установщик в переменные-члены час и минуту, чтобы они оставались в формате времени.И класс должен быть передан через намерение, поэтому он реализует Parcelable.Но в нем говорится, что класс Parcelable должен иметь основной конструктор, поэтому у меня проблемы с добавлением сеттеров.Может кто-нибудь сказать, пожалуйста, почему и решение?Спасибо.

1 Ответ

0 голосов
/ 27 ноября 2018

Свойства Котлина уже поставляются с геттерами и сеттерами.Каждый раз, когда вы говорите time.hour = 5 или val currentTime = time.hour - , вызывается соответствующий установщик или получатель .

Проблема здесь не в конструкторе, а в CREATOR, который требуется для посылки.

Полный пример будет выглядеть так:

class Time(var hour: Int, var minute: Int) : Comparable<Time>, Parcelable {

    override fun writeToParcel(dest: Parcel?, flags: Int) {
        dest!!.writeInt(hour)
        dest.writeInt(minute)
    }

    override fun describeContents(): Int = 0

    override fun compareTo(other: Time): Int {
        // your comparsion logic
    }

    companion object CREATOR : Parcelable.Creator<Time> {
        override fun createFromParcel(parcel: Parcel): Time {
            return Time(parcel.readInt(), parcel.readInt())
        }

        override fun newArray(size: Int): Array<Time?> {
            return arrayOfNulls(size)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...