[英]How to pop back stack when button is pressed on Jetpack Compose
我在片段中有一个撰写屏幕,在该屏幕中有一个按钮。
我想在按下此按钮时关闭片段/返回上一屏幕。
但我无法访问 onClick 内的任何活动/片段方法。
我怎样才能做到这一点?
@AndroidEntryPoint
class MyFragment @Inject constructor() : Fragment(){
@ExperimentalComposeUiApi
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return ComposeView(requireContext()).apply {
this.setContent {
Button(
onClick = {
//Dismiss fragment.
},
) {
Text(
"Click me"
)
}
}
}
}
}
您可以在任何可组合项中获取LocalOnBackPressedDispatcherOwner
,并使用onBackPressed()
或以其他方式导航:
val onBackPressedDispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher
Button(
onClick = {
onBackPressedDispatcher?.onBackPressed()
},
) {
Text(
"Click me"
)
}
像这样解决:
@AndroidEntryPoint
class MyFragment @Inject constructor(
) : Fragment(){
@ExperimentalComposeUiApi
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return ComposeView(requireContext()).apply {
this.setContent {
val shouldDismiss = remember { mutableStateOf(false) }
if (shouldDismiss) {
dismissFragment()
}else{
Button(
onClick = {
shouldDismiss.value = true
},
) {
Text(
"Click me"
)
}
}
}
}
}
private fun dismissFragment(){
activity?.onBackPressed()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.