У меня есть класс,который я хочу сохранить в bundle.Я знаю что для этого нужно implements Parcelable.Там есть два метода:
@Override
public int describeContents ( ){
return 0;
}
И
@Override
public void writeToParcel ( Parcel p1, int p2 ){
}
Что сними нужно делать?
У Bundle
есть метод putSerializable
. Если Ваш класс помечен аннотацией Serializable
, Вы можете передать его экземпляр в Bundle
с помощью этого метода.
myBundle.putSerializable("key", myObject);
Для передачи объектов в android есть два способа. Первый, это передавать Serializable, а второй Parcaleble. Serializable использует механизм рефлексии и не требует реализации, нужно только от него наследоваться. Parcelable требует реализации и в нем мы сохраняем каждое поле в так называемые ячейки памяти вручную и он намного быстрее. Для реализации нужно сделать класс наследником Parcelable и переопределить 2 метода.
В методе writeToParcel мы записываем наши поля у объект Parcelable для дальнейшего считывания в конструкторе, здесь важен порядок. В describeContents, если у вас POJO объект нужно возвращать 0. Пример:
class TestModel(val name: String?, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt())
override fun writeToParcel(dest: Parcel?, flags: Int) {
dest?.writeString(name)
dest?.writeInt(age)
}
override fun describeContents(): Int = 0
companion object CREATOR : Parcelable.Creator<TestModel> {
override fun createFromParcel(parcel: Parcel): TestModel {
return TestModel(parcel)
}
override fun newArray(size: Int): Array<TestModel?> {
return arrayOfNulls(size)
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть веб элемент дерово, элементы которого появляются по мере скролинка по нему
В SurfaceView есть метод setFixedSize, чтобы фиксированно установить размер отображаемого видеоКак установить такой же фиксированный размер для TextureView?
Вопрос: в div с классом target надо отобразить сумму товаровКак правильно перебрать массив(должно быть 2 перебора или можно в 1 пробежать) и какой...
Я написал код который изменяет цвет меню в зависимости от позиции на странице