未使用 navController.currentDestination?.id 获取当前片段 ID
Not getting current fragment id using navController.currentDestination?.id
我有一个带按钮的 activity,在它下面我有 navhost 片段和 3 个片段。
但是当我点击按钮时没有任何反应,我变厚了,因为片段的 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)
}
}
}
}
问题是您只获得了一次 currentDestination id,因为在创建 activity 时调用了 onCreate 并且您想检查当您单击 Button 时您当前在哪个片段上,所以只需移动
这个
val id = navController.currentDestination?.id
点击按钮进入
像这样
binding.myButton.setOnClickListener {
val id = navController.currentDestination?.id
if (id == R.id.firstFragment) {
navController.navigate(R.id.goto_secondFragment)
}
if (id == R.id.secondFragment) {
navController.navigate(R.id.goto_thirdFragment)
}
}
现在,当您单击下一个或上一个按钮时,它将首先获取当前目标 ID,然后检查您现在所在的片段。
我有一个带按钮的 activity,在它下面我有 navhost 片段和 3 个片段。
但是当我点击按钮时没有任何反应,我变厚了,因为片段的 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)
}
}
}
}
问题是您只获得了一次 currentDestination id,因为在创建 activity 时调用了 onCreate 并且您想检查当您单击 Button 时您当前在哪个片段上,所以只需移动
这个
val id = navController.currentDestination?.id
点击按钮进入
像这样
binding.myButton.setOnClickListener {
val id = navController.currentDestination?.id
if (id == R.id.firstFragment) {
navController.navigate(R.id.goto_secondFragment)
}
if (id == R.id.secondFragment) {
navController.navigate(R.id.goto_thirdFragment)
}
}
现在,当您单击下一个或上一个按钮时,它将首先获取当前目标 ID,然后检查您现在所在的片段。