当前位置: 首页 > 知识库问答 >
问题:

静态编程语言Android Studio-Var在SDK29中被视为val

晏沈义
2023-03-14

我在静态编程语言中遇到了一件非常奇怪的事情。我有

var myClipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager?
var myClip: ClipData? = ClipData.newPlainText( /* my code */ )

作为var变量,我应该能够重新分配他的值,但是当我这样做时

myClipboard?.primaryClip = myClip

它给了我错误

无法重新分配Val

最奇怪的是,我用了几个星期这个代码,它总是有效的。当我更新到API 29时,它今天停止工作

这是我的build.gradleandroid{}

    android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.arfmann.pushnotes"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 16
        versionName "1.6"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

共有3个答案

孟沛
2023-03-14

这是工作副本,

    val myClipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager?
    val myClip: ClipData? = ClipData.newPlainText("", "")

    myClipboard?.primaryClip = myClip

希望这能帮助你

魏明亮
2023-03-14

像这样使用它

val clipboard = ctx.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Beacon infos", it.toJson())
clipboard.setPrimaryClip(clip)
姜经武
2023-03-14

如ClipboardManager文档所示,getPrimaryClip返回一个ClipData(即可为null的ClipData),而setPrimaryClip()接受一个非null的ClipData。

当类型不同时,Kotlin不支持属性访问(可空性是Kotlin类型的一个重要部分),因此当您调用primaryClip时,Kotlin只能有效地为您提供等价的val。

API 29中添加了setPrimaryClip上的nullability注释,这就是为什么升级编译器SDK版本后行为会有所不同的原因。

要设置主剪辑,必须显式使用非空的剪辑数据,或者在API 28上使用clearPrimaryClip()完全清除主剪辑。

 类似资料:
  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。

  • 是否可以在中的class中添加一个新的静态方法?通常,由于Kotlin Extensions,这样的事情在Kotlin中是可能的。 我已经尝试在一个名为的文件中执行以下操作: 但<code>数学。无法解析同伴。。。

  • 正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创

  • 我是Kotlin的初学者,正在进行循环练习 简单代码示例: 请有人告诉我为什么我们不使用关键字var/val指定计数器/迭代器变量类型“i”。因为“var /val”是静态编程语言中声明变量的标准方式。

  • 为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D