Parcelables не поддерживает значения по умолчанию. Аргумент deeplink для навигации Android

Во время реализации решения с передачей параметров при навигации между модулями я обнаружил ошибку сериализации. Deeplinks, насколько мне известно, принимает настраиваемые типы аргументов, которые являются Parcelables или Serializable.

Я использую новейшую версию навигации 2.2.0

Сообщение об ошибке:

java.lang.UnsupportedOperationException: Parcelables не поддерживает значения по умолчанию.

Я что-то делаю не так или это все еще в разработке?

Вот небольшой пример:

<fragment
    android:id="@+id/sampleFragment"
    android:name="com.testapp.app.samples.navigation.SampleFragment"
    android:label="SampleFragment">
    <argument
        android:name="Args"
        app:argType="com.testapp.navigation.SampleArgs" />
    <deepLink app:uri="app://app/samples/navigation/SampleFragment?Args={Args}"/>
</fragment>
@Parcelize
@Keep data class SampleArgs(
    val text: String
) : NavArgs, Parcelable
val x = SampleArgs("TEST")
val uri = Uri.parse("app://app/samples/navigation/SampleFragment?Args=$x")
navController.navigate(uri)

Я нашел здесь нечто подобное Android Parcelable не поддерживает значение по умолчанию values ​​App Crash

Это мой первый пост в стеке, так что будьте осторожны :)

РЕДАКТИРОВАТЬ

Вот ответ:

https://issuetracker.google.com/issues/148523779


person Nikron    schedule 29.01.2020    source источник


Ответы (1)


Parcelables в настоящее время не поддерживает значения по умолчанию, поэтому вам нужно передать свой объект как строковое значение. Да, это обходной путь ... Поэтому вместо передачи самого объекта как объекта Parcelize мы можем превратить этот объект в JSON (String) и передать его через навигацию, а затем проанализировать этот JSON обратно в объект в пункте назначения. Вы можете использовать GSON для преобразования объекта в строку json.

person abhi    schedule 16.06.2021