From 4091b58a2e3af94bc5b76abecb394cdca4aeab44 Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 2 Oct 2023 09:52:11 +0800 Subject: [PATCH] Fix crash --- .../tv/ui/fragment/CollectFragment.java | 16 +++++++- .../com/fongmi/android/tv/bean/Collect.java | 40 ++++++++++++++++++- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index 2d13ae108..59f33bb15 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -90,7 +90,7 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call @Override protected void initData() { - addVideo(mCollect.getList()); + if (mCollect != null) addVideo(mCollect.getList()); } private boolean checkLastSize(List items) { @@ -114,6 +114,18 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call mAdapter.addAll(mAdapter.size(), rows); } + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + outState.putParcelable("collect", mCollect); + } + + @Override + public void onViewStateRestored(@Nullable Bundle savedInstanceState) { + super.onViewStateRestored(savedInstanceState); + if (savedInstanceState != null) mCollect = savedInstanceState.getParcelable("collect"); + } + @Override public void onItemClick(Vod item) { getActivity().setResult(Activity.RESULT_OK); @@ -128,7 +140,7 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call @Override public void onLoadMore(String page) { - if (mCollect.getSite().getKey().equals("all")) return; + if (mCollect == null || mCollect.getSite().getKey().equals("all")) return; mViewModel.searchContent(mCollect.getSite(), getKeyword(), page); mScroller.setLoading(true); } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Collect.java b/app/src/main/java/com/fongmi/android/tv/bean/Collect.java index 33d373bbd..6d856aca3 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Collect.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Collect.java @@ -1,12 +1,15 @@ package com.fongmi.android.tv.bean; +import android.os.Parcel; +import android.os.Parcelable; + import com.fongmi.android.tv.R; import com.fongmi.android.tv.utils.ResUtil; import java.util.ArrayList; import java.util.List; -public class Collect { +public class Collect implements Parcelable { private boolean activated; private List list; @@ -23,6 +26,9 @@ public class Collect { return new Collect(list.get(0).getSite(), list); } + public Collect() { + } + public Collect(Site site, List list) { this.site = site; this.list = list; @@ -51,4 +57,36 @@ public class Collect { public void setPage(int page) { this.page = page; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeByte(this.activated ? (byte) 1 : (byte) 0); + dest.writeTypedList(this.list); + dest.writeParcelable(this.site, flags); + dest.writeInt(this.page); + } + + protected Collect(Parcel in) { + this.activated = in.readByte() != 0; + this.list = in.createTypedArrayList(Vod.CREATOR); + this.site = in.readParcelable(Site.class.getClassLoader()); + this.page = in.readInt(); + } + + public static final Creator CREATOR = new Creator<>() { + @Override + public Collect createFromParcel(Parcel source) { + return new Collect(source); + } + + @Override + public Collect[] newArray(int size) { + return new Collect[size]; + } + }; }