var*_*run 7 android android-fragments kotlin android-architecture-navigation
我正在使用导航组件加载我的片段,如下所示:https : //developer.android.com/guide/navigation/navigation-getting-started
navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.navigation_opt1,
R.id.navigation_opt2,
R.id.navigation_opt3,
R.id.navigation_more
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
Run Code Online (Sandbox Code Playgroud)
我Toolbar在顶部也有一个 Spinner。我想在选择项目fragment时重新加载/刷新& 它的视图模型spinner。我尝试了以下代码进行重新加载,但它不起作用。另外,我知道我们不应该fragmentManager在导航组件中使用
val ftr: FragmentTransaction = requireFragmentManager().beginTransaction()
ftr.detach(this).attach(this).commit()
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
小智 15
抱歉回复晚了。我在相同的场景中使用下面的代码。这可能有帮助。在微调器 ItemClick 中调用此方法。我们必须使用 popbackstack 来避免一次又一次添加相同的片段。
private fun refreshCurrentFragment(){
val id = navController.currentDestination?.id
navController.popBackStack(id!!,true)
navController.navigate(id)
}
Run Code Online (Sandbox Code Playgroud)
是的,上面的答案/sf/answers/4632001/..是正确的
如果您想在执行特定操作后重新加载/刷新当前片段,则必须销毁当前片段并再次导航到此处
val fragmentId = findNavController().currentDestination?.id
findNavController().popBackStack(fragmentId!!,true)
findNavController().navigate(fragmentId)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |