【发布时间】:2022-01-05 12:25:12
【问题描述】:
我有一个带有按钮的活动,在它下面我有带有 3 个片段的 navhost 片段。 但是当我点击按钮没有任何反应时,我很厚,因为片段的 id 没有得到。 这是我的代码:
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
val navHostFragment = supportFragmentManager.findFragmentById(R.id.navHost) as NavHostFragment
val navController = navHostFragment.navController
val id = navController.currentDestination?.id
binding.myButton.setOnClickListener {
if (id == R.id.firstFragment) {
navController.navigate(R.id.goto_secondFragment)
}
if (id == R.id.secondFragment) {
navController.navigate(R.id.goto_thirdFragment)
}
}
}
}
【问题讨论】:
-
navController = findNavController(R.id.nav_host_fragment)
-
不幸的是,这不起作用
Activity does not have a NavController set on -
这就是我尝试使用
val navHostFragment = supportFragmentManager.findFragmentById(R.id.navHost) as NavHostFragment val navController = navHostFragment.navController val id = navController.currentDestination?.id的主要原因 -
val id = navController.currentDestination?.id在检查 id 之前点击添加这行代码。 -
@Zurmati 谢谢。你能解释一下发生了什么吗?我是编程新手。如果可能,将其粘贴到答案中。