首页 > 解决方案 > 对于公共乐趣 Fragment.findNavController() 的许多论点

问题描述

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

    }
}

当我将鼠标悬停在 findnavcontroller 上时,“对于 public fun Fragment.findNavController():NAvcontroller defined in androidx.navigation.fragment”的许多参数显示。我无法解决上述粗体线上的错误。在这种情况下,我该怎么办?

标签: androidkotlinnavigation

解决方案


根据Navigate to a destination documentationandroidx.navigation.fragment.findNavController您导入的不带任何参数(它会找到当前 Fragment 的父 NavHostFragment 并且不需要 NavHostFragment 的 ID)。

您编写的行,即findNavController(R.id.nav_host_fragment)setupActionBarWithNavController()是您在 Activity 中调用的方法,而不是在 Fragment 中调用的方法。


推荐阅读