对于公共乐趣 Fragment.findNavController() 的许多论点

Posted

技术标签:

【中文标题】对于公共乐趣 Fragment.findNavController() 的许多论点【英文标题】:To many arguments for public fun Fragment.findNavController() 【发布时间】:2020-04-30 20:42:35 【问题描述】:
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.drawerlayout.widget.DrawerLayout
import com.example.tender.R
import com.example.tender.databinding.FragmentAvailableTenderBinding
import com.example.tender.databinding.FragmentLoginBinding
import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.NavigationUI

/**
 * A simple [Fragment] subclass.
 */
class AvailableTenderFragment : Fragment() 

    private lateinit var drawerLayout: DrawerLayout

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? 

        val binding = FragmentAvailableTenderBinding.inflate(inflater)

        drawerLayout = binding.drawerLayout

        **val navController = this.findNavController(R.id.nav_host_fragment)**

        **NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)**

        NavigationUI.setupWithNavController(binding.navView, navController)

        binding.root

    

“To many arguments for public fun Fragment.findNavController():NAvcontroller defined in androidx.navigation.fragment”当我将鼠标悬停在 findnavcontroller 上时显示。我无法解决上述粗线中的错误。在这种情况下是什么我应该怎么做?

【问题讨论】:

findNavController(R.id.nav_host_fragment)setupActionBarWithNavController 是您在 Activity 中调用的方法,而不是在 Fragment 中调用的方法。你能解释一下你的应用程序的设置吗? 感谢您的回答!哦!是的,我写错地方了,对我很有帮助。 【参考方案1】:

按照Navigate to a destination documentation,你导入的androidx.navigation.fragment.findNavController不带参数(它找到当前Fragment的父NavHostFragment,不需要NavHostFragment的ID)。

您编写的行,即findNavController(R.id.nav_host_fragment)setupActionBarWithNavController() 是您将在活动中调用的方法,而不是在片段中。

【讨论】:

如果这有助于回答您的问题,请确保接受该答案以将该问题从未回答的问题队列中删除。祝你好运! 这很令人困惑,为什么:val navController = findNavController() bottomNavigation.setupWithNavController(navController) 在具有导航主机的片段的onActivityCreated() 内不起作用?

以上是关于对于公共乐趣 Fragment.findNavController() 的许多论点的主要内容,如果未能解决你的问题,请参考以下文章

javascript的乐趣——0220

使用 lambda 定义可以带来啥乐趣?

《善圈第15期沙龙》善圈沙龙,乐趣无穷!

编程乐趣:身份证号码验证的方法

《算法的乐趣》——华容道游戏

研究老式计算技术的乐趣