diff --git a/app/src/main/java/me/zobrist/tichucounter/fragments/FragmentBase.kt b/app/src/main/java/me/zobrist/tichucounter/fragments/FragmentBase.kt new file mode 100644 index 0000000..f1f619e --- /dev/null +++ b/app/src/main/java/me/zobrist/tichucounter/fragments/FragmentBase.kt @@ -0,0 +1,32 @@ +package me.zobrist.tichucounter.fragments + +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 + +abstract class FragmentBase : Fragment() { + + private var _binding: VB? = null + abstract val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> VB + + // This property is only valid between onCreateView and + // onDestroyView. + protected val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = bindingInflater.invoke(inflater, container, false) + return binding.root + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/fragments/HistoryList.kt b/app/src/main/java/me/zobrist/tichucounter/fragments/HistoryList.kt index a1ed4bf..ea58a95 100644 --- a/app/src/main/java/me/zobrist/tichucounter/fragments/HistoryList.kt +++ b/app/src/main/java/me/zobrist/tichucounter/fragments/HistoryList.kt @@ -4,38 +4,16 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import me.zobrist.tichucounter.databinding.FragmentHistoryListBinding -class HistoryList : Fragment() { +class HistoryList : FragmentBase() { - private var _binding: FragmentHistoryListBinding? = null - - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! - - companion object { - fun newInstance() = HistoryList() - } + override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentHistoryListBinding + get() = FragmentHistoryListBinding::inflate private val viewModel: HistoryListViewModel by activityViewModels() - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - _binding = FragmentHistoryListBinding.inflate(inflater, container, false) - return binding.root - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/me/zobrist/tichucounter/fragments/Keyboard.kt b/app/src/main/java/me/zobrist/tichucounter/fragments/Keyboard.kt index 73cabbb..d16ce7e 100644 --- a/app/src/main/java/me/zobrist/tichucounter/fragments/Keyboard.kt +++ b/app/src/main/java/me/zobrist/tichucounter/fragments/Keyboard.kt @@ -8,39 +8,18 @@ import android.view.View import android.view.ViewGroup import android.view.inputmethod.InputMethodManager import android.widget.EditText -import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import me.zobrist.tichucounter.databinding.FragmentKeyboardBinding -class Keyboard : Fragment() { +class Keyboard : FragmentBase() { - private var _binding: FragmentKeyboardBinding? = null + override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentKeyboardBinding + get() = FragmentKeyboardBinding::inflate - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! private var unhandledNegation: Boolean = false - companion object { - fun newInstance() = Keyboard() - } - private val viewModel: KeyboardViewModel by activityViewModels() - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - _binding = FragmentKeyboardBinding.inflate(inflater, container, false) - return binding.root - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/me/zobrist/tichucounter/fragments/TeamNames.kt b/app/src/main/java/me/zobrist/tichucounter/fragments/TeamNames.kt index a91d322..47932ea 100644 --- a/app/src/main/java/me/zobrist/tichucounter/fragments/TeamNames.kt +++ b/app/src/main/java/me/zobrist/tichucounter/fragments/TeamNames.kt @@ -4,38 +4,16 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import me.zobrist.tichucounter.databinding.FragmentTeamNamesBinding -class TeamNames : Fragment() { +class TeamNames : FragmentBase() { - private var _binding: FragmentTeamNamesBinding? = null - - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! - - companion object { - fun newInstance() = TeamNames() - } + override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentTeamNamesBinding + get() = FragmentTeamNamesBinding::inflate private val viewModel: TeamNamesViewModel by activityViewModels() - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - _binding = FragmentTeamNamesBinding.inflate(inflater, container, false) - return binding.root - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) diff --git a/app/src/main/java/me/zobrist/tichucounter/fragments/TeamScores.kt b/app/src/main/java/me/zobrist/tichucounter/fragments/TeamScores.kt index 0f5e88d..eb06b0c 100644 --- a/app/src/main/java/me/zobrist/tichucounter/fragments/TeamScores.kt +++ b/app/src/main/java/me/zobrist/tichucounter/fragments/TeamScores.kt @@ -4,38 +4,16 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import me.zobrist.tichucounter.databinding.FragmentTeamScoresBinding -class TeamScores : Fragment() { +class TeamScores : FragmentBase() { - private var _binding: FragmentTeamScoresBinding? = null - - // This property is only valid between onCreateView and - // onDestroyView. - private val binding get() = _binding!! - - companion object { - fun newInstance() = TeamScores() - } + override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentTeamScoresBinding + get() = FragmentTeamScoresBinding::inflate private val viewModel: TeamScoresViewModel by activityViewModels() - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - _binding = FragmentTeamScoresBinding.inflate(inflater, container, false) - return binding.root - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState)