gpt4 book ai didi

android - 在 fragment 内使用具有单个 Activity 、布局抽屉和工具栏的 Android 导航组件

转载 作者:行者123 更新时间:2023-11-29 16:29:24 25 4
gpt4 key购买 nike

是否可以在每个 fragment 都有自己的工具栏的单个 Activity 应用程序中使用 Android 导航组件/图形?

此外,容器 Activity 有一个抽屉导航,需要使用工具栏和导航 Controller 进行设置,但在创建 Activity 时我还没有工具栏。

我正在使用这段代码(在 onCreate 中调用)

    private fun setupNavigation() {

// val toolbar = findViewById<Toolbar>(R.id.toolbar);
// setSupportActionBar(toolbar);
// supportActionBar!!.setDisplayHomeAsUpEnabled(true);
// supportActionBar!!.setDisplayShowHomeEnabled(true);

val drawerLayout = findViewById<DrawerLayout>(R.id.drawer_layout);

val navigationView = findViewById<NavigationView>(R.id.drawer_navigation_view);

val navController = Navigation.findNavController(this, R.id.navigation_host_fragment);

NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)

NavigationUI.setupWithNavController(navigationView, navController)

navigationView.setNavigationItemSelectedListener(this)
}

但是因为我当时没有工具栏,所以它会抛出错误(ActionBar.setTitle 在空对象上调用)。

在这种情况下是否可以使用这个,或者我需要放弃使用导航组件的想法?

最佳答案

唯一的要求是在调用 setSupportActionBar() 之后调用 setupActionBarWithNavController。如果您在 Fragment 中执行此操作,则只需在此之后直接调用 setupActionBarWithNavController

例如,在您的 fragment 中:

private fun onViewCreated(view: View, bundle: savedInstanceState) {

val toolbar = view.findViewById<Toolbar>(R.id.toolbar);
// Set the Toolbar as your activity's ActionBar
requireActivity().setSupportActionBar(toolbar);

// Find the activity's DrawerLayout
val drawerLayout = requireActivity().findViewById<DrawerLayout>(R.id.drawer_layout);

// Find this Fragment's NavController
val navController = NavHostFragment.findNavController(this);

// And set up the ActionBar
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)
}

还有一个单独的 NavigationUI.setupWithNavController() 方法接受一个 Toolbar。如果您实际上没有使用任何其他 ActionBar API,这将是合适的。

关于android - 在 fragment 内使用具有单个 Activity 、布局抽屉和工具栏的 Android 导航组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57547445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com