出于兼容性原因,我的项目使用jdk 7。 build.gradle底部 buildscript { ext.kotlin_version = ‘1.2.0’ repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } 当我使用jdk 7进行gradle时,我得到这个: java.lang.UnsupportedClassVersionError: org/jetbrains/kotlin/gradle/KotlinGradleModel : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at […]
我有一个Kotlin中的数据类inheritance自一个Java类,它定义了一个带有1个参数的构造函数, public BaseClass(String userSessionId) { this.userSessionId = userSessionId; } 我的Kotlin类被定义为这个 class DerivedClass( userSessionId: String, var other: Other? = null ) : BaseClass(userSessionId) { 我不能将其定义为数据类,因为userSessionId是Kotlin要求的数据类中的一个val或var。 但是,如果我这样做了,那么Retrofit会抛出一个exception,因为有两个成员userSessionId。 有一种方法来从一个Java类inheritance一个构造函数参数的数据类? 请注意,我不能更改基类。 一个可能的解决方案是定义一个虚拟val来避免名称冲突,但这不是理想的 data class DerivedClass( val dummy: String, var other: Other? = null ) : BaseClass(dummy) {
在gradle中使用kotlin时, compileKotlin在compileJava之前执行。 我需要在compileJava之前执行compileKotlin 。 我试过compileKotlin.dependsOn(compileJava)但是它给循环依赖构建失败。 我也试过了 compileJava.dependsOn = compileJava.taskDependencies.values – compileKotlin 但是,它仍然在compileKotlin之前执行compileJava 。 如何在compileJava之前执行compileKotlin ?
我使用gradle,并且inheritance了所有Java,Groovy和Kotlin的项目。 我试图将项目转换为一种语言,但在此期间,我需要得到一个特定的编译顺序:Java,然后是Kotlin,然后是Groovy。 我以为我可以在build.gradle做到这build.gradle : compileJava.dependsOn = compileJava.taskDependencies.values – ‘compileKotlin’ compileKotlin.dependsOn compileJava compileGroovy.dependsOn compileKotlin classes.dependsOn compileGroovy compileGroovy.classpath += files(compileKotlin.destinationDir) 根据我读的一些东西: https : //discuss.gradle.org/t/kotlin-groovy-and-java-compilation/14903/8 但是,我最终得到了一个循环依赖,如下所示: * What went wrong: Circular dependency between the following tasks: :demo:compileJava \— :demo:compileKotlin \— :demo:compileJava (*) 如果我正确地阅读它,它看起来像它告诉我compileJava依赖于compileKotlin ,但我已经明确地删除了依赖关系,所以我不知道发生了什么事情。
我使用SDK 25在Kotlin中构建一个应用程序。 现在,Android Studio更新后,我得到这个错误: …/audiobook/build/intermediates/res/merged/opensource/debug/values-v26/values-v26.xml No resource found that matches the given name: attr ‘android:keyboardNavigationCluster’. No resource found that matches the given name: attr ‘android:keyboardNavigationCluster’. Execution failed for task ‘:audiobook:processOpensourceDebugResources’. > com.android.ide.common.process.ProcessException: Failed to execute aapt 我知道我应该更新我的Gradle依赖到SDK 26,但是如果我这样做,那么我需要重写我所有的Kotlin代码,因为SDK 25和SDK 26之间有很多变化。 有什么办法, 当我只在我的Gradle中的SDK 25上时,如何不生成values-v26文件 ? 谢谢。 这里是错误的截图
Kotlin介绍了在这里描述的声明网站的变化。 generics参数的out / in关键字在某些情况下可能导致ClassCastException。 我的程序如下所示。 fun main(args: Array) { var l: List = mutableListOf(“string”) demo(l) println(“======”) for (s in l) { println(s) } } fun demo(strs: List) { val objects: List = strs // This is OK, since T is an out-parameter if (objects is MutableList) { val obs: MutableList = objects as MutableList obs.add(TextView()) […]
其实我是kotlin的新手, 因此,这个问题可能是非常基本的。 根据kotlin文档,两个variables可以与===和==运算符进行比较。 第一个(’==’)检查它们是否有相同的内容,第二个(’+ ==’)检查它们是否具有相同的引用。 但是,我找不到任何内置类,其对象具有相同的内容,但具有不同的引用。 var str1 : String = “Hello World” var str2 : String = “Hello World” if( str1 == str2 ){ // yes print(“Their contents are same\n”) { if( str1 === str2 ){ // yes print(“Their references are same\n”) } 到目前为止我所遇到的所有课程的实例,如果内容相同的话,都有相同的参考。 我们如何定义两个具有相同内容但具有不同引用的对象?
我试图将一个函数链接到AndroidStudio中的按钮的onClick属性,但出于某种原因,系统无法识别我编码的方法。 有趣的是,当我用Java编写代码时,它工作正常。 在Kotlin它不是。 我更新了我的Kotlin并检查了它的配置,但是我找不到问题。 我的朋友尝试了我在Linux电脑上做的同样的事情,并且为他工作。 我有一个Mac OS,我不知道是否有一些额外的配置照顾。 谁能帮我? 这是我的简单活动: import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun sendMessage(view: View) { } } 这是xml: 在build.gradle我有: apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ 错误信息: Corresponding method handler ‘public void sendMessage(android.view.View)’ not found The […]
如何将使用Kotlin在ImageView选择的ImageView传递给Android中的另一个Activity? 这是使用内部存储选择ImageView内部的ImageView方法,我需要将图像传递给另一个活动 fun Loadimage() { var intent = Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI) startActivityForResult(intent,ImageCode) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode==ImageCode && data!=null && resultCode== Activity.RESULT_OK) { val selectedImage = data.data val filepath = arrayOf(MediaStore.Images.Media.DATA) val cursor = contentResolver.query(selectedImage,filepath,null,null,null) cursor.moveToFirst() val Index = cursor.getColumnIndex(filepath[0]) val Picture = cursor.getString(Index) cursor.close() imageView.setImageBitmap(BitmapFactory.decodeFile(Picture)) } […]
为什么在Kotlin / Scala中,伴侣对象可以实现一些接口,这有什么好处呢? 何时使用此function是有用的?