Как использовать Jetpack Navigation для одноэкранного приложения (или можно ли избежать использования навигации)?

Я пытаюсь изучить Java-кодирование и создаю простое одноэкранное приложение в Android Studio, следуя руководству. Учебное пособие было написано до того, как был представлен Jetpack Navigation, и я столкнулся с ошибкой компилятора, связанной с вставленным кодом Navcontroller. Фрагменты приведены ниже. В идеале я хотел бы включить базовые функции Navcontroller, чтобы иметь возможность расширять использование этих функций по мере того, как я начинаю изучать более сложные структуры приложений. Итак, как мне заставить мое простое приложение скомпилироваться и запуститься, решив указанные ниже проблемы? Или, альтернативно, могу ли я закомментировать или отключить использование Navcontroller, поскольку я не думаю, что он мне нужен на данный момент.

В приведенном ниже фрагменте кода я получаю сообщение об ошибке компилятора, сообщающее, что он не может разрешить ссылку «nav_host_fragment_content_main» в строке кода «NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);» в процедуре onCreate.

Фрагмент кода:

      @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    binding = ActivityMainBinding.inflate(getLayoutInflater());
    setContentView(binding.getRoot());

    txtGuess = (EditText) findViewById(R.id.txtGuess);
    btnGuess = (Button) findViewById(R.id.btnGuess);
    btnPlayAgain = (Button) findViewById(R.id.btnPlayAgain);
    lblOutput = (TextView) findViewById(R.id.lblOutput);
    newGame();

    btnGuess.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            checkGuess();
        }
    });

    btnPlayAgain.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            btnPlayAgain.setVisibility(View.INVISIBLE);
            txtGuess.setText("");
            newGame();
        }
    });
    setSupportActionBar(binding.toolbar);

    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
    appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
    NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

    binding.fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

0 ответов

Другие вопросы по тегам