com.here.android.mpa.search.PlaceRequest не может быть приведен к java.io.Serializable - PullRequest
0 голосов
/ 16 ноября 2018

Классы HEAR API для Android не являются сериализуемыми, поэтому при использовании фрагментов вы не можете передавать их в качестве аргументов фрагментам. Есть ли способ обойти это?

У меня есть список Recycler, показывающий названия PlaceLink и другие данные. Когда я нажимаю на элемент в списке, мне нужно отправить PlaceLink на новый фрагмент. Я вызываю метод getInstance и передаю PlaceLink, а затем пытаюсь добавить PlaceLink в пакет аргументов. Тем не менее, вы не можете, потому что он не Serializable, и поэтому вы не можете добавить его через putSerializable.

Вот код в моем фрагменте, который мне нужно использовать:

public static RestaurantFoundDetails newInstance(PlaceLink placeLink) {
    RestaurantFoundDetails fragment = new RestaurantFoundDetails();
    Bundle args = new Bundle();
    args.putSerializable(ARG_PARAM1, placeLink);
    fragment.setArguments(args);
    return fragment;
}

Кажется, что нет никакого обходного пути, если я использую HEAR API!

Если вы попытаетесь обойти это, вы получите эту ошибку, когда ваше приложение приостановлено:

java.lang.RuntimeException: Parcel: unable to marshal value com.here.android.mpa.search.PlaceLink@4312236b
        at android.os.Parcel.writeValue(Parcel.java:1772)
        at android.os.Parcel.writeList(Parcel.java:926)
        at android.os.Parcel.writeValue(Parcel.java:1719)
        at android.os.Parcel.writeArrayMapInternal(Parcel.java:838)
        at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1542)
        at android.os.Bundle.writeToParcel(Bundle.java:1232)
        at android.os.Parcel.writeBundle(Parcel.java:878)
        at android.support.v4.app.FragmentState.writeToParcel(FragmentState.java:123)
        at android.os.Parcel.writeTypedArray(Parcel.java:1462)
        at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:619)
        at android.os.Parcel.writeParcelable(Parcel.java:1791)
        at android.os.Parcel.writeValue(Parcel.java:1697)
        at android.os.Parcel.writeArrayMapInternal(Parcel.java:838)
        at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1542)
        at android.os.Bundle.writeToParcel(Bundle.java:1232)
        at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4604)
        at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3934)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

1 Ответ

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

Эта функция недоступна в HereSDK, и в настоящее время нет планов ее реализации.

BR

...