【kotlin其它】with简单用法

1、主要记录自己在学习过程中遇到的一些简要的问题清单

在 Kotlin 中,with 函数(也称为扩展函数)用于将一个对象作为上下文,并在其上下文中执行代码块。当你使用 with 函数时,你传递一个对象作为参数,然后在代码块中可以使用这个对象。

在 Android 开发中,MainActivity.parentThis 通常指的是 MainActivity 的父对象,可能是 Activity 或其他类型的对象。with 函数允许你以一种简洁的方式访问这个对象,并在代码块中使用它。

在您提供的代码中,with(MainActivity.parentThis){ ... } 是一个 with 函数的调用,它将 MainActivity 的父对象作为上下文。在代码块中,你检查 _uiState.value.isFullScreen 条件,并根据条件设置屏幕方向。

例如,如果 _uiState.value.isFullScreen 为 false,那么屏幕方向设置为 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;如果为 true,则设置为 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

with 函数的优点是它可以减少代码的重复,并使代码更易于阅读和维护。它还可以帮助避免硬编码对象引用,从而使代码更易于测试和重构。

    fun setScreenOrientation(){
        //不能直接使用context.setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
        //因为这个函数不是在APP里面创建的,因为实在Mainaicitity当中创建的,所以采用with的写法才行
        with(MainActivity.parentThis){
            if (!_uiState.value.isFullScreen){
                setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
            }else{
                setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)

            }
        }
        _uiState.value = uiState.value.copy(isFullScreen = !_uiState.value.isFullScreen)
//        when(uiState.value.isFullScreen){
//            //设置全屏--值为false则设置全屏--为true则设置为小平
//            false ->{
//                Log.d("setScreenOrientation","进入全屏状态--false--")
//                setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
//                _uiState.value = uiState.value.copy(isFullScreen = true)
//            }
//            true ->{
//                Log.d("setScreenOrientation","关掉全屏状态--true----")
//                context.setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
//                _uiState.value = uiState.value.copy(isFullScreen = false)
//            }
//        }

像上面这个代码,因为错误的运用了context上下文内容,导致一直运行不成功导致

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值