如何连接选项菜单和导航组件

slmsl1lt  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(320)

我正在努力学习导航组件,我一直坚持实现选项菜单。我有一个简单的选项叫做“设置”,它导航到“设置碎片”。我按照文档实现了它,但是菜单项不会以这种方式显示在工具栏中。
这是我的主要活动代码:

public class MainActivity extends AppCompatActivity {

    private NavController navController;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        NavHostFragment hostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
        navController = NavHostFragment.findNavController(hostFragment);

        AppBarConfiguration appBarConfiguration =
                new AppBarConfiguration.Builder(navController.getGraph()).build();

        Toolbar toolbar = findViewById(R.id.toolbar);
        NavigationUI.setupWithNavController(
                toolbar,
                navController,
                appBarConfiguration
        );

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        return NavigationUI.onNavDestinationSelected(item, navController)
                || super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onSupportNavigateUp() {
        return navController.navigateUp() || super.onSupportNavigateUp();
    }
}

但是,当我用 setSupportActionBar() 提前使用 NavigationUI.setupActionBarWithNavController() 而不是 NavigationUI.setupWithNavController() 它似乎是工作,我可以看到选项菜单和导航功能也工作,但我失去了不错的小工具栏动画,我也不知道如果它的最佳做法。我对这个主题还不熟悉,所以我想知道我遗漏了什么,或者如何正确地实现它。
提前谢谢。

hjqgdpho

hjqgdpho1#

AppBarConfiguration appBarConfiguration =
 new AppBarConfiguration.Builder(R.id.nav_home, R.id.nav_history, R.id.nav_service).build();

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

相关问题