Java 在浮动操作按钮内导航

Java 在浮动操作按钮内导航,java,android,Java,Android,我添加了主要活动。我有一个晶圆厂按钮,我试图导航到点击按钮的片段之一。但我收到java.lang.IllegalArgumentException:导航目标XXXXX/galleryFragment对此NavController未知不确定异常的原因是什么。我是android开发新手,请原谅我的无知 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState

我添加了主要活动。我有一个晶圆厂按钮,我试图导航到点击按钮的片段之一。但我收到java.lang.IllegalArgumentException:导航目标XXXXX/galleryFragment对此NavController未知不确定异常的原因是什么。我是android开发新手,请原谅我的无知

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    mAppBarConfiguration = new AppBarConfiguration.Builder(
            R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
            .setDrawerLayout(drawer)
            .build();
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(navigationView, navController);

    FloatingActionButton fab = findViewById(R.id.fab);
    Navigation.setViewNavController(fab, navController);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Navigation.findNavController(view).navigate(R.id.galleryFragment);
        }
    });
}

Navigation.findNavController(view)
仅当视图位于
NavHostFragment
中时才起作用(即,它是由您的片段之一创建的视图)

如果您的
FloatingActionButton
NavHostFragment
之外(例如在活动的布局中),则需要使用与在
onCreate()中使用的相同的内容:
Navigation.findNavController(此,R.id.nav\u主机\u片段)


您可以将
navController
存储为全局变量,然后不要使用
Navigation.findNavController
,而是使用
navController.navigate

NavController navController = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(navigationView, navController);

    FloatingActionButton fab = findViewById(R.id.fab);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            navController.navigate(R.id.galleryFragment);
        }
    });
}

你能发布你的导航图吗?
NavController navController = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(navigationView, navController);

    FloatingActionButton fab = findViewById(R.id.fab);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            navController.navigate(R.id.galleryFragment);
        }
    });
}