如何在按下Jetpack Compose上的按钮时弹出堆叠 [英] How to pop back stack when button is pressed on Jetpack Compose

查看:15
本文介绍了如何在按下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"
                    )
                }
            }
        }
    }
}

推荐答案

您可以使用LocalContext获取任何可组合内容中的上下文。您可以从中获取活动,因此您可以使用onBackPressed()或以其他方式导航:

val context = LocalContext.current
Button(
    onClick = {
        context.findActivity()?.onBackPressed()
    },
) {
    Text(
        "Click me"
    )
}

findActivity

fun Context.findActivity(): Activity? {
    var context = this
    while (context is ContextWrapper) {
        if (context is Activity) return context
        context = context.baseContext
    }
    return null
}

这篇关于如何在按下Jetpack Compose上的按钮时弹出堆叠的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆