如何解决IlegalArgumentException:此 NavController 未知导航目标 xxx
当我将带有 tablayout 的 viewpager2 添加到我的项目时,当我在片段中提供一条新闻时,它不会将我导航到下一个片段以提供有关该新闻的更多信息,我拥有整个项目带导航组件
代码 ViewPager 适配器:
class ViewPagerHomeAdapter(fragment: Fragment): FragmentStateAdapter(fragment) {
override fun getItemCount(): Int = 3
override fun createFragment(position: Int): Fragment {
return when(position){
0 -> {
HomeFragment()
}
1 ->{
SegundoFragment()
}
2 ->{
TercerFragment()
}
else ->{
Fragment()
}
}
}
}
代码ViewPagerHome
class ViewPagerHome : Fragment(R.layout.fragment_view_pager_home) {
private lateinit var binding:FragmentViewPagerHomeBinding
private lateinit var viewPagerHomeAdapter:ViewPagerHomeAdapter
override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
super.onViewCreated(view,savedInstanceState)
binding = FragmentViewPagerHomeBinding.bind(view)
viewPagerHomeAdapter = ViewPagerHomeAdapter(this)
binding.viewPagerNews.adapter = viewPagerHomeAdapter
TabLayoutMediator(binding.tabLayout,binding.viewPagerNews){tab,position ->
when(position){
0->{
tab.text="Novedades"
}
1->{
tab.text="Looks"
}
2->{
tab.text ="Proximamente"
}
}
}.attach()
}
}
代码新闻片段
class HomeFragment : Fragment(R.layout.fragment_home),HomeAdapter.OnNewsClickListener {
private lateinit var binding: FragmentHomeBinding
private val viewModel by viewModels<HomeViewModel> {
HomeViewModelFactory(
HomeRepoImpl(
HomeDataSource()
)
)
}
override fun onViewCreated(view: View,savedInstanceState)
binding = FragmentHomeBinding.bind(view)
viewModel.fecthLatestNews().observe(viewLifecycleOwner,Observer { result ->
when (result) {
is Result.Loading -> {
binding.progressBar.visibility = View.VISIBLE
}
is Result.Sucess -> {
binding.progressBar.visibility = View.GONE
binding.rvHome.adapter = HomeAdapter(result.data,this@HomeFragment)
}
is Result.Failure ->{
binding.progressBar.visibility = View.GONE
Toast.makeText(requireContext(),"Ocurrio un error ${result.exception}",Toast.LENGTH_SHORT).show()
}
}
})
}
override fun onNewsClick(news: news) {
val action = HomeFragmentDirections.actionHomeFragmentToDetailsNewsFragment(
news.news_picture,news.news_title,news.news_description,news.news_date,news.news_autor
)
findNavController().navigate(action)
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com(将#修改为@)