如何在使用导航组件加载后杀死 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();
这是我的示例代码,我需要在将片段加载到 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();