TrivialDriveJava/app/src/main/java/com/sample/android/trivialdrivesample/ui/GameFragment.java [45:69]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private GameViewModel gameViewModel;
    private FragmentGameBinding binding;

    /*
        We use data binding to bind the game view with this fragment, and this allows us to
        automatically observe changes in our TrivialDriveViewModel from our layout. The ViewModel
        handles most of the UI and game-related business logic.
     */
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Log.v(TAG, "onCreateView");
        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_game, container, false);
        // This allows data binding to automatically observe any LiveData we pass in
        binding.setLifecycleOwner(this);
        return binding.getRoot();
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Log.v(TAG, "onViewCreated");

        GameViewModel.GameViewModelFactory gameViewModelFactory =
                new GameViewModel.GameViewModelFactory(
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



TrivialDriveKotlin/app/src/main/java/com/sample/android/trivialdrivesample/ui/GameFragment.java [45:69]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private GameViewModel gameViewModel;
    private FragmentGameBinding binding;

    /*
        We use data binding to bind the game view with this fragment, and this allows us to
        automatically observe changes in our TrivialDriveViewModel from our layout. The ViewModel
        handles most of the UI and game-related business logic.
     */
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Log.v(TAG, "onCreateView");
        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_game, container, false);
        // This allows data binding to automatically observe any LiveData we pass in
        binding.setLifecycleOwner(this);
        return binding.getRoot();
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Log.v(TAG, "onViewCreated");

        GameViewModel.GameViewModelFactory gameViewModelFactory =
                new GameViewModel.GameViewModelFactory(
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



