Sobes.tech
Junior
145
questionbank

Что можно передать в объект Bundle?

Answer from AI

sobes.tech AI

Примитивные типы данных:

  • boolean
  • byte
  • short
  • int
  • long
  • float
  • double
  • char
  • String
  • CharSequence

Массивы примитивных типов данных:

  • boolean[]
  • byte[]
  • short[]
  • int[]
  • long[]
  • float[]
  • double[]
  • char[]
  • String[]
  • CharSequence[]

Объекты, реализующие интерфейсы Parcelable или Serializable.

Списки объектов, реализующих Parcelable или Serializable.

Bundle (то есть можно вкладывать Bundle в Bundle).

Некоторые специальные типы данных Android:

  • SparseArray
  • Size
  • SizeF
  • Bundle (как упомянуто выше)

Пример сохранения данных в Bundle:

// Сохранение примитивных типов
bundle.putString("name", "Alice")
bundle.putInt("age", 30)

// Сохранение Parcelable объекта (если MyParcelableObject реализует Parcelable)
bundle.putParcelable("user", MyParcelableObject("Alice", 30))

// Сохранение списка Parcelable объектов
val users = arrayListOf(MyParcelableObject("Bob", 25), MyParcelableObject("Charlie", 35))
bundle.putParcelableArrayList("usersList", users)

// Сохранение Serializable объекта (если MySerializableObject реализует Serializable)
bundle.putSerializable("settings", MySerializableObject(true))

// Сохранение Bundle внутри Bundle
val nestedBundle = Bundle()
nestedBundle.putString("extraInfo", "some data")
bundle.putBundle("nested", nestedBundle)

Пример получения данных из Bundle:

// Получение примитивных типов
val name = bundle.getString("name")
val age = bundle.getInt("age", 0) // С значением по умолчанию

// Получение Parcelable объекта
val user = bundle.getParcelable<MyParcelableObject>("user")

// Получение списка Parcelable объектов
val usersList = bundle.getParcelableArrayList<MyParcelableObject>("usersList")

// Получение Serializable объекта
val settings = bundle.getSerializable("settings") as? MySerializableObject

// Получение вложенного Bundle
val nestedBundle = bundle.getBundle("nested")
val extraInfo = nestedBundle?.getString("extraInfo")