Tag: kotlin

问题与Android Studio和主要Activity.kt期待成员声明

我一直在试图通过下面的YouTube教程学习。 我正在使用Android Studio 3.1 Canary,并且在教程中遇到了同样的问题并陷入困境。 例如,如果你在3:30分钟的时候访问这个YouTube教程https://youtu.be/3RMboPhUbmg?t=210 。 当他们输入MaterialSearchView searchView; 它出现了一个红色的下划线,表示“期待成员声明”,无论我尝试多少次搜索,我都找不到答案。 这个错误的解决方案是什么? 谢谢 这是包含在Main2Activity.kt中的代码。 结果应该是调用或知道工具栏和materialsearchview对象 import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.support.v7.widget.Toolbar import com.miguelcatalan.materialsearchview.MaterialSearchView import kotlinx.android.synthetic.main.activity_main2.* class Main2Activity : AppCompatActivity () { **MaterialSearchView searchView;** “expecting member declaration error” **Toolbar toolbar;** “expecting member declaration error” Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); toolbar=(Toolbar()) […]

在Kotlin中,为什么jackson在某些情况下未能解组未注释的对象,而不是在其他情况下

我使用Kotlin和Jongo来访问MongoDB。 Jongo使用Jackson来序列化/反序列化对象,以便从MongoDB保存和读取它们。 我使用Jackson-Kotlin模块来帮助使用构造函数序列化Kotlin数据类。 下面是一个序列化好的数据类的例子: data class Workflow ( @field:[MongoId MongoObjectId] @param:MongoId var id: String? = null, val name: String, val states: Map ) 下面是一个不能反序列化的类的例子: data class Session ( @field:[MongoObjectId MongoId] @param:MongoId var id: String? = null, var status: CallStatus, var currentState: String, var context: MutableMap, val events: MutableMap ) Jongo抛出了以下例外,因为Jackson的反序列化失败了: org.jongo.marshall.MarshallingException: Unable to unmarshall result […]

Kotlin扩展函数与成员函数?

我知道在Kotlin中使用扩展函数来扩展类的function(例如,来自库或API)。 但是,通过使用扩展function,在代码可读性/结构方面是否有任何优势: class Foo { … } fun Foo.bar() { // Some stuff } 与成员职能相反: class Foo { … fun bar() { // Some stuff } } ? 有推荐的做法吗?

是否有限制stdlib函数在Kotlin中的可见性?

Kotlin带有许多标准的库函数,其中很多默认情况下是可见的,而实际上并没有导入它们。 所以像listOf , arrayListOf , ArrayList()等函数事实上被插入到全局名称空间中。 有一个编译器标志,将禁用此行为?

Android Studio 3 Kotlin版本

在开始Android Studio 3测试版2我得到这个消息: “kotlin-stdlib-1.1.4-2”库中的Kotlin运行时版本是1.1.4-2,而插件版本是1.1.4-release-Studio3.0-3。运行时库应该被更新以避免兼容性问题。” 在buildscript (项目级gradle)中,我已经将ext.kotlin_version = ‘1.1.4-2’改为ext.kotlin_version = ‘1.1.4-3’ 我尝试重建和清理项目,但没有任何作品,我仍然开始得到这个消息。 Gradle项目级别: buildscript { ext.kotlin_version = ‘1.1.4-3’ ext.app_compat_version = ‘26.0.1’ ext.google_play_services = ‘11.2.0’ ext.firebase_ui_version = ‘2.1.1’ ext.retrofit_version = ‘2.3.0’ repositories { google() jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.0-beta3’ // update kotlin to 1.1.4-2 classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” // NOTE: Do not place your application dependencies here; they […]

我可以从命令行或从Ant调用Kotlin noargs插件吗?

Kotlin有一个noarg编译器插件 ,可以用来为特殊注释类生成合成的无参数构造函数。 文档页面清楚地解释了如何在Maven和Gradle中使用它,但是不清楚它是否可以使用,或者如何使用它,无论是从Ant还是在命令行中使用kotlinc 。 到目前为止,我一直无法做到这一点。 这是我的NoArgs.kt源文件: package test annotation class NoArgs @NoArgs data class Test(val x: String, val y: String) 以下是我尝试过的一些命令行,根本没有任何作用: $ kotlinc -verbose “-Xplugin:$KOTLIN_HOME/lib/noarg-compiler-plugin.jar -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt 和: $ kotlinc -verbose “-Xplugin=$KOTLIN_HOME/lib/kotlin-annotation-processing.jar;$KOTLIN_HOME/lib/noarg-compiler-plugin.jar;$JRE_HOME/lib/tools.jar” -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt 当我运行$ javap test.Test ,没有生成无参数构造函数的证据。 还有一些证据表明,插件并没有运行,事实上,如果我把垃圾,而不是-P选项的单词注释 ,没有错误信息或行为改变。 如果你能告诉我如何使用kotlinc或Ant来运行它,我真的很感激它!

扩展函数不会创建新的Observable对象

我有kotlin和rxjava意想不到的行为。 我使用picasso创建了一个用于加载图像的扩展function fun Picasso.loadBitmap(url: String) : Observable = Observable.create { emitter -> Log.d(“picasso load bitmap”, “me ${this}”) try { val bitmap = load(url).centerCrop() .resize(100, 100) .transform(CircleTransformer()) .get() emitter.onNext(bitmap) emitter.onComplete() } catch (e: IOException) { emitter.onError(e) } } 我在这样的时间间隔(几乎在同一时间)多次调用这个, picasso.loadBitmap(place.image_url) .subscribeOn(Schedulers.io()) .retryWhen { error -> error.zipWith(Observable.range(1, 5), BiFunction { t1, t2 -> RetryWrapper(t2.toLong(), t1) }) .flatMap […]

Android数据绑定和Kotlin

我将我的Android应用程序从Java转换为Kotlin。 它工作正常,除了当我尝试转换使用Android数据绑定库的文件。 在这种情况下,Android Studio会在编译时抱怨未解决的引用: Error:(10, 44) Unresolved reference: AdapterHistoriesListBinding 其中AdapterHistoriesListBinding是应该由数据绑定库生成的文件的名称。 它在Java中正常工作,所以我猜这是Kotlin的一个问题。 我正在使用Android Studio 2.0.0-beta6,Android Gradle Plugin 2.0.0-beta6和Kotlin 1.0。 数据绑定库和Kotlin一起工作有什么需要做的吗?

图像存在,不为空,但我得到一个NullPointerExceptionexception

简短的介绍 我目前正在使用的应用程序从JSON中获取图像,如果正确使用它,并将其保存为下次使用的加载图像。 问题 突然之间,应用程序开始崩溃加载和进一步检查,我已经到位的file.isFile && file.canRead()检查返回正面,但它仍然在BitmapFactory.decodeStream崩溃。 该文件的字节数为8k,与其他设备相比,其中相同的图像实际上有43k字节。 图像json是一个更大的json消息(约500kb)的一部分,它不是在开始或结束。 在发生这种情况之前的最后一次使用中,加载或签名没有问题,表明下载可能已经停止了一半。 即使如此,图像仍然有8kb,所以我想应该只是用它的部分创建的东西,而不是抛出NullPointerException 我正在使用Android Studio 3.0 Beta 4,代码位于Kotlin。 我必须在这个设备上运行100次,甚至在发生这种情况之后,它在其他测试设备上运行得非常好,加上在启动时获得完全相同的json的iOS应用程序 我在找什么 关于如何处理这个问题的建议,或者是Android或Kotlin中已知的错误的信息。 我可以重新安装应用程序在设备上,它会再次确定,但不会希望发生这种情况后,应用程序被释放,如果我可以阻止它。 LaterEdit :有了Xaviers的建议,我已经把文件复制到桌面上了,当它加载的时候它肯定是格式不正确的,实际上显示了Mac上运行的东西的一些严重畸形的图像。 我试图上传它,但它只是显示为一个空的白色图像。 它仍然有8kb,所以它包含一些数据。 这怎么可能,可以预防? 码 加载应用程序,我检查图像是否存在,并将其加载到imageView中 try { if (DesignSupport().imageExists(“logo”, this)) { if (DesignSupport().loadImage(“logo”, this) != null) { imageView.setImageBitmap(DesignSupport().loadImage(“logo”, this)) } } } catch (error: Error) { Log.i(tag, error.stackTrace.toString()) } 检查图像是否存在 fun imageExists(string: String, context: […]

异步工作,但得到未解决的参考等待

我有以下代码。 我无法理解为什么会发生这种情况。 我没有发现有关这个的现有答案。 我试图直接在tenny和twy分配的地方等待,但这也行不通。 我不认为依赖关系有问题,因为aysnc的作品。 我也发布了我的build.gradle文件。 import kotlinx.coroutines.experimental.async fun main(args: Array) { async{ val tenny = star_ten(1) val twy =star_two(10) println() println(twy.await()+tenny.await()) println() } } fun star_two(num:Int):Int{ return num * 2 } fun star_ten(num:Int):Int{ return num * 10 } 我的build.gradle是 group ‘org.nul.cool’ version ‘1.0-SNAPSHOT’ buildscript { ext.kotlin_version = ‘1.1.60’ repositories { mavenCentral() } dependencies { […]