如何在按下Jetpack Compose上的按钮时弹出堆叠

How to pop back stack when button is pressed on Jetpack Compose(如何在按下Jetpack Compose上的按钮时弹出堆叠)
本文介绍了如何在按下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上的按钮时弹出堆叠的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)
How to render something in an if statement React Native(如何在If语句中呈现某些内容Reaction Native)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Using Firebase Firestore in offline only mode(在仅脱机模式下使用Firebase FiRestore)
Crash on Google Play Pre-Launch Report: java.lang.NoSuchMethodError(Google Play发布前崩溃报告:java.lang.NoSuchMethodError)