diff --git a/automotive/build.gradle b/automotive/build.gradle index 83101b6e1..1156851d5 100644 --- a/automotive/build.gradle +++ b/automotive/build.gradle @@ -34,6 +34,10 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + viewBinding true + } + compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt b/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt index a364610fc..d98ac612d 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt @@ -36,7 +36,7 @@ import androidx.lifecycle.ViewModelProvider *

This screen serves as a demo for UI best practices for PIN code sign in. Sign in implementation * will be app specific and is not included. */ -class PinCodeSignInFragment : Fragment() { +class PinCodeSignInFragment : Fragment(R.layout.pin_sign_in) { private lateinit var toolbar: Toolbar private lateinit var appIcon: ImageView @@ -45,13 +45,6 @@ class PinCodeSignInFragment : Fragment() { private lateinit var pinCodeContainer: ViewGroup private lateinit var footerTextView: TextView - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.pin_sign_in, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val context = requireContext() diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt b/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt index de93f185a..df11cf1c1 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt @@ -18,15 +18,12 @@ package com.example.android.uamp.automotive import android.os.Bundle import android.text.method.LinkMovementMethod -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.appcompat.widget.Toolbar +import androidx.core.content.ContextCompat.getDrawable import androidx.core.text.HtmlCompat import androidx.fragment.app.Fragment import com.bumptech.glide.Glide +import com.example.android.uamp.automotive.databinding.QrSignInBinding /** * Fragment that is used to facilitate QR code sign-in. Users scan a QR code rendered by this @@ -35,57 +32,27 @@ import com.bumptech.glide.Glide *

This screen serves as a demo for UI best practices for QR code sign in. Sign in implementation * will be app specific and is not included. */ -class QrCodeSignInFragment : Fragment() { - - private lateinit var toolbar: Toolbar - private lateinit var appIcon: ImageView - private lateinit var primaryTextView: TextView - private lateinit var secondaryTextView: TextView - private lateinit var qrCode: ImageView - private lateinit var footerTextView: TextView - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.qr_sign_in, container, false) - } +class QrCodeSignInFragment : Fragment(R.layout.qr_sign_in) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val context = requireContext() + val binding = QrSignInBinding.bind(view) - toolbar = view.findViewById(R.id.toolbar) - appIcon = view.findViewById(R.id.app_icon) - primaryTextView = view.findViewById(R.id.primary_message) - secondaryTextView = view.findViewById(R.id.secondary_message) - qrCode = view.findViewById(R.id.qr_code) - footerTextView = view.findViewById(R.id.footer) - - toolbar.setNavigationOnClickListener { + binding.toolbar.setNavigationOnClickListener { requireActivity().supportFragmentManager.popBackStack() } - appIcon.setImageDrawable(context.getDrawable(R.drawable.aural_logo)) - primaryTextView.text = getString(R.string.qr_sign_in_primary_text) - secondaryTextView.text = getString(R.string.qr_sign_in_secondary_text) + binding.appIcon.setImageDrawable(getDrawable(requireContext(), R.drawable.aural_logo)) + binding.primaryMessage.text = getString(R.string.qr_sign_in_primary_text) + binding.secondaryMessage.text = getString(R.string.qr_sign_in_secondary_text) // Links in footer text should be clickable. - footerTextView.text = HtmlCompat.fromHtml( - context.getString(R.string.sign_in_footer), + binding.footer.text = HtmlCompat.fromHtml( + requireContext().getString(R.string.sign_in_footer), HtmlCompat.FROM_HTML_MODE_LEGACY ) - footerTextView.movementMethod = LinkMovementMethod.getInstance() - - setQrCode(getString(R.string.qr_code_url)) - } + binding.footer.movementMethod = LinkMovementMethod.getInstance() - /** - * Sets the QR code rendered on this sign in screen. - * - * @param code The QR code to display. - */ - private fun setQrCode(url: String) { - Glide.with(this).load(url).into(qrCode) + Glide.with(this).load(getString(R.string.qr_code_url)).into(binding.qrCode) } } diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/SettingsActivity.kt b/automotive/src/main/java/com/example/android/uamp/automotive/SettingsActivity.kt index 6d74507ae..6c6a4c8ca 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/SettingsActivity.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/SettingsActivity.kt @@ -18,21 +18,20 @@ package com.example.android.uamp.automotive import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.widget.Toolbar +import com.example.android.uamp.automotive.databinding.ActivitySettingsBinding /** * This class exposes application settings * for integration with MediaCenter in Android Automotive. */ class SettingsActivity : AppCompatActivity() { - private lateinit var toolbar: Toolbar override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_settings) + val binding = ActivitySettingsBinding.inflate(layoutInflater) + setContentView(binding.root) - toolbar = findViewById(R.id.toolbar) - setSupportActionBar(toolbar) + setSupportActionBar(binding.toolbar) supportActionBar?.setHomeButtonEnabled(true) supportActionBar?.setDisplayHomeAsUpEnabled(true)