package cn.super12138.todo.views import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.viewbinding.ViewBinding import com.google.android.material.color.MaterialColors import com.google.android.material.transition.MaterialSharedAxis abstract class BaseFragment : Fragment() { private var _binding: T? = null protected val binding get() = _binding!! override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ true) returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ false) exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ true) reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ false) } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = getViewBinding(inflater, container, false) return binding.root } // https://github.com/material-components/material-components-android/issues/1984#issuecomment-1089710991 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) // Overlap colors. view.setBackgroundColor(MaterialColors.getColor(view, android.R.attr.colorBackground)) } abstract fun getViewBinding( inflater: LayoutInflater, container: ViewGroup?, attachToRoot: Boolean ): T override fun onDestroyView() { super.onDestroyView() _binding = null } }