如何在使用导航组件加载后杀死 Fragment

how to kill Fragment after load it using navigation component

这是我的示例代码,我需要在将片段加载到 navHost activity(主要 Activity)后终止片段,我正在使用导航组件顺便说一句,片段是 启动画面 Fragment 所以如何在按下后退按钮加载后停止显示它。

class SplashFragment : Fragment() {

private var _binding: FragmentSplashBinding? = null
private val binding get() = _binding!!

private lateinit var loadingAnim : AnimationDrawable

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    _binding = FragmentSplashBinding.inflate(inflater, container, false)

    lunchLogoAnimation()
    lunchLoadingAnimation()

    Handler(Looper.getMainLooper()).postDelayed({
        findNavController().navigate(R.id.action_splashFragment_to_homeFragment)

    },6000)


    return binding.root
}

private fun lunchLogoAnimation(){

    val loadAnimation = AnimationUtils.loadAnimation(activity,R.anim.splash_screen_logo_translate)
    Handler(Looper.getMainLooper()).postDelayed({
        binding.monkeyLogoSplash.visibility = View.VISIBLE
        binding.monkeyLogoSplash.startAnimation(loadAnimation)
    },500)

}

private fun lunchLoadingAnimation(){

    loadingAnim = binding.loadingDots.drawable as AnimationDrawable

    Handler(Looper.getMainLooper()).postDelayed({
        binding.loadingDots.animate().setDuration(500).alpha(1f).withEndAction {
            loadingAnim.start()
        }
    },1500)

}

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}

可以轻松删除片段,

在主要 activity-> kotlin 里面,

supportFragmentManager.beginTransaction().remove(myFragment).commit()

或在特定片段内,

parentFragmentManager.beginTransaction().remove(this).commit()

java

getSupportFragmentManager().beginTransaction().remove(myFragment).commit();
getParentFragmentManager.beginTransaction().remove(this).commit();