# UI Implementation Guide This guide provides complete UI implementations for Android sleep tracking with both ViewBinding and Jetpack Compose. ## ViewBinding Implementation ### Complete Fragment with ViewBinding ```kotlin class TrackingFragment : Fragment() { private var _binding: FragmentTrackingBinding? = null private val binding get() = _binding!! private val viewModel: SleepTrackingViewModel by viewModels() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _binding = FragmentTrackingBinding.inflate(inflater, container, false) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnTrack.setOnClickListener { viewModel.startTracking() } viewLifecycleOwner.lifecycleScope.launch { viewModel.trackingState.collect { state -> when (state) { AsleepState.STATE_TRACKING_STARTED -> { binding.progressIndicator.visibility = View.VISIBLE binding.btnTrack.text = "Stop Tracking" } AsleepState.STATE_INITIALIZED -> { binding.progressIndicator.visibility = View.GONE binding.btnTrack.text = "Start Tracking" } else -> {} } } } } override fun onDestroyView() { super.onDestroyView() _binding = null } } ``` ### Layout XML (fragment_tracking.xml) ```xml