Класс BadParcelableException
Класс BadParcelableException
сигнализирует, что поток parcel
не совпадает с ожидаемым типом
или данные обрезаны.
Возникает при getParcelableExtra,
восстановлении savedInstanceState
и IPC между процессами.
Соседняя проблема объёма -
TransactionTooLargeException.
Пример
Давайте безопасно прочитаем строку из intent:
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val line = try {
intent.getStringExtra("abcde") ?: "12345"
} catch (e: RuntimeException) {
Log.e("abcde", "12345")
"12345"
}
setContent {
Text(text = line)
}
}
}
Строковый extra читается без parcel классов.
Неверный Parcelable в bundle
даёт BadParcelableException
при распаковке.
Смотрите также
-
класс
TransactionTooLargeException,
если bundle слишком большой -
класс
Intent,
откуда читают parcel extras -
метод
onCreate,
где разбирают savedInstanceState -
класс
Resources.NotFoundException,
другая ошибка при разборе ресурсов