From 12802d0bbf49c5b9fa4626869bd4a582aecc0c5f Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Sat, 20 Sep 2025 01:24:56 +0800 Subject: [PATCH] Fix search fragment --- .../android/tv/ui/activity/SearchActivity.java | 4 +++- .../android/tv/ui/fragment/CollectFragment.java | 8 ++++++++ .../android/tv/ui/fragment/SearchFragment.java | 16 ++++++++++++---- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/SearchActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/SearchActivity.java index 325f0987a..8e3e2416e 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/SearchActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/SearchActivity.java @@ -34,7 +34,9 @@ public class SearchActivity extends BaseActivity { @Override protected void initView(Bundle savedInstanceState) { - getSupportFragmentManager().beginTransaction().add(R.id.container, SearchFragment.newInstance(getKeyword()), SearchFragment.class.getSimpleName()).commit(); + if (savedInstanceState == null) { + getSupportFragmentManager().beginTransaction().replace(R.id.container, SearchFragment.newInstance(getKeyword()), SearchFragment.class.getSimpleName()).commit(); + } } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index e6868c22d..73912f542 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -68,6 +68,7 @@ public class CollectFragment extends BaseFragment implements MenuProvider, Colle @Override protected void initMenu() { + if (isHidden()) return; AppCompatActivity activity = (AppCompatActivity) requireActivity(); activity.setSupportActionBar(mBinding.toolbar); activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -202,9 +203,16 @@ public class CollectFragment extends BaseFragment implements MenuProvider, Colle if (mExecutor != null) mExecutor.pause(); } + @Override + public void onHiddenChanged(boolean hidden) { + if (hidden) requireActivity().removeMenuProvider(this); + else initMenu(); + } + @Override public void onDestroyView() { super.onDestroyView(); + requireActivity().removeMenuProvider(this); if (mExecutor != null) mExecutor.shutdownNow(); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SearchFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SearchFragment.java index e2f99cd42..c5eec8cff 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SearchFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SearchFragment.java @@ -78,6 +78,7 @@ public class SearchFragment extends BaseFragment implements MenuProvider, WordAd @Override protected void initMenu() { + if (isHidden()) return; AppCompatActivity activity = (AppCompatActivity) requireActivity(); activity.setSupportActionBar(mBinding.toolbar); activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -138,10 +139,11 @@ public class SearchFragment extends BaseFragment implements MenuProvider, WordAd private void collect(String keyword) { FragmentManager fm = requireActivity().getSupportFragmentManager(); - Fragment search = fm.findFragmentByTag(getClass().getSimpleName()); - FragmentTransaction ft = fm.beginTransaction(); - ft.add(R.id.container, CollectFragment.newInstance(keyword)); - ft.setTransition(TRANSIT_FRAGMENT_OPEN); + Fragment collect = fm.findFragmentByTag(CollectFragment.class.getSimpleName()); + if (collect != null) return; + FragmentTransaction ft = fm.beginTransaction().setTransition(TRANSIT_FRAGMENT_OPEN); + ft.add(R.id.container, CollectFragment.newInstance(keyword), CollectFragment.class.getSimpleName()); + Fragment search = fm.findFragmentByTag(SearchFragment.class.getSimpleName()); if (search != null) ft.hide(search); ft.setReorderingAllowed(true); ft.addToBackStack(null); @@ -219,4 +221,10 @@ public class SearchFragment extends BaseFragment implements MenuProvider, WordAd if (hidden) requireActivity().removeMenuProvider(this); else initMenu(); } + + @Override + public void onDestroyView() { + super.onDestroyView(); + requireActivity().removeMenuProvider(this); + } }