diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java index a506737ed..9d6b2a541 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java @@ -23,12 +23,8 @@ public abstract class BaseFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { initView(); - initEvent(); } protected void initView() { } - - protected void initEvent() { - } } 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 7c02eb469..3bfabd4f4 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 @@ -132,4 +132,10 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call mViewModel.searchContent(mCollect.getSite(), getKeyword(), page); mScroller.setLoading(true); } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if (mBinding != null && !isVisibleToUser) mBinding.recycler.moveToTop(); + } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index 468052c4d..373f6e779 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -15,9 +15,12 @@ import com.fongmi.android.tv.databinding.FragmentFolderBinding; import com.fongmi.android.tv.ui.base.BaseFragment; import java.util.HashMap; +import java.util.Optional; public class TypeFragment extends BaseFragment { + private FragmentFolderBinding mBinding; + public static TypeFragment newInstance(String key, String typeId, Style style, HashMap extend, boolean folder) { Bundle args = new Bundle(); args.putString("key", key); @@ -50,9 +53,13 @@ public class TypeFragment extends BaseFragment { return (HashMap) getArguments().getSerializable("extend"); } + private VodFragment getChild() { + return (VodFragment) getChildFragmentManager().findFragmentById(R.id.container); + } + @Override protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) { - return FragmentFolderBinding.inflate(inflater, container, false); + return mBinding = FragmentFolderBinding.inflate(inflater, container, false); } @Override @@ -62,22 +69,19 @@ public class TypeFragment extends BaseFragment { public void openFolder(String typeId) { VodFragment next = VodFragment.newInstance(getKey(), typeId, getStyle(), getExtend(), getFolder()); - VodFragment current = (VodFragment) getChildFragmentManager().findFragmentById(R.id.container); FragmentTransaction ft = getChildFragmentManager().beginTransaction(); - if (current != null) ft.hide(current); + Optional.ofNullable(getChild()).ifPresent(ft::hide); ft.add(R.id.container, next); ft.addToBackStack(null); ft.commit(); } public void toggleFilter(boolean visible) { - VodFragment current = (VodFragment) getChildFragmentManager().findFragmentById(R.id.container); - if (current != null) current.toggleFilter(visible); + Optional.ofNullable(getChild()).ifPresent(f -> f.toggleFilter(visible)); } public void onRefresh() { - VodFragment current = (VodFragment) getChildFragmentManager().findFragmentById(R.id.container); - if (current != null) current.onRefresh(); + Optional.ofNullable(getChild()).ifPresent(VodFragment::onRefresh); } public boolean canBack() { @@ -87,4 +91,10 @@ public class TypeFragment extends BaseFragment { public void goBack() { getChildFragmentManager().popBackStack(); } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if (mBinding != null && !isVisibleToUser) Optional.ofNullable(getChild()).ifPresent(f -> f.setUserVisibleHint(false)); + } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index e2af082e6..49e0e8131 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -273,4 +273,10 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback mBinding.recycler.requestFocus(); } } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if (mBinding != null) mBinding.recycler.moveToTop(); + } }