override fun onCreate()

in ReferenceAppKotlin/app/src/main/java/com/android/tv/reference/browse/BrowseFragment.kt [67:141]


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        displayMetrics.setTo(resources.displayMetrics)
        blurImageTransformation = BlurImageTransformation(requireContext())

        handler = Handler(Looper.getMainLooper())
        backgroundManager = BackgroundManager.getInstance(requireActivity()).apply {
            if (!isAttached) {
                attach(requireActivity().window)
            }
            setThemeDrawableResourceId(BACKGROUND_RESOURCE_ID)
        }

        val signInMenuItem = BrowseCustomMenu.MenuItem(getString(R.string.sign_in)) {
            findNavController().navigate(R.id.action_global_signInFragment)
        }
        val signOutMenuItem = BrowseCustomMenu.MenuItem(getString(R.string.sign_out)) {
            viewModel.signOut()
        }

        viewModel = ViewModelProvider(this).get(BrowseViewModel::class.java)
        viewModel.browseContent.observe(
            this,
            {
                adapter = BrowseAdapter(it, viewModel.customMenuItems.value ?: listOf())
            }
        )
        viewModel.customMenuItems.observe(
            this,
            {
                adapter = BrowseAdapter(viewModel.browseContent.value ?: listOf(), it)
            }
        )
        viewModel.isSignedIn.observe(
            this,
            {
                viewModel.customMenuItems.postValue(
                    listOf(
                        BrowseCustomMenu(
                            getString(R.string.menu_identity),
                            listOf(
                                if (it) {
                                    signOutMenuItem
                                } else {
                                    signInMenuItem
                                }
                            )
                        )
                    )
                )
            }
        )

        setOnItemViewClickedListener { _, item, _, _ ->
            when (item) {
                is Video ->
                    findNavController().navigate(
                        BrowseFragmentDirections.actionBrowseFragmentToPlaybackFragment(item)
                    )
                is BrowseCustomMenu.MenuItem -> item.handler()
            }
        }

        setOnItemViewSelectedListener { _, item, _, _ ->
            if (item is Video) {
                updateBackgroundDelayed(item)
            }
        }

        // BrowseSupportFragment allows for adding either text (with setTitle) or a Drawable
        // (with setBadgeDrawable) to the top right of the screen. Since we don't have a suitable
        // Drawable, we just display the app name in text.
        title = getString(R.string.app_name)
    }