通过枚举类属性Kotlin进行过滤

如何过滤kotlin中的枚举类? (只是学习)在下面的代码中,文件前面定义的枚举类是PayStatus {PAID,UNPAID}。 fun nextRentDate(): LocalDate? { return rentPaymentSchedule. filter { it.value.paymentStatus is PayStatus.UNPAID}. minBy { it.value.date.toEpochDay() }?.value?.date } 我得到的错误:Kotlin:不兼容的类型:PayStatus.UNPAID和枚举

什么是Kotlin Gradle依赖关系中的“实现”?

我正在使用Android Studio 3.0 Preview来启动新的Kotlin项目。 当我尝试在build.gradle添加依赖项时,我看到了implementation范围,而不是通常的compile 。 androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) implementation 'com.android.support:appcompat-v7:25.3.1' testImplementation 'junit:junit:4.12' 还有androidTestImplementation和testImplementation作用域。 最后,我添加compile添加第三方依赖关系,它的工作原理。 compile 'io.reactivex.rxjava2:rxandroid:2.0.1' 所以我的问题是.. 什么是implementation , androidTestImplementation和testImplementation范围? 它与compile ,测试compile和androidTestCompile有什么不同吗? 我应该为我的Kotlin项目使用哪一个? 编辑:我的不好,这个问题不是Kotlin特定的。 这是新的Android Gradle插件配置 。

在kotlin中尝试makeSceneTransitionAnimation

而学习kotlin我尝试创建makeSceneTransitionAnimation图像转换,但它不像在java中,这是我的代码从适配器类 itemView.imageContent.setOnClickListener { val i = Intent(context, ImagePreviewActivity::class.java) i.putExtra("IMAGE", item.content) val trans = context.getString(R.string.transition) val options = ActivityOptionsCompat.makeSceneTransitionAnimation( Activity(), itemView.imageContent, trans ) context.startActivity(i, options.toBundle()) } 这是我的logcat java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.Window.hasFeature(int)' on a null object reference at android.app.ActivityOptions.makeSceneTransitionAnimation(ActivityOptions.java:709) at android.app.ActivityOptions.makeSceneTransitionAnimation(ActivityOptions.java:648) at android.app.ActivityOptions.makeSceneTransitionAnimation(ActivityOptions.java:622) at android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAnimation(ActivityOptionsCompat.java:172) at com.docotel.binmaspublic.module.report.ReportAdapter$ViewHolder$bind$2.onClick(ReportAdapter.kt:130) 对不起,如果你发现这是一个重复的问题

Kotlin:为什么使用抽象类(与接口)?

我知道Kotlin中抽象类和接口之间的两个区别: 抽象类可以有状态(例如var …) 一个类可以实现多个接口,但不能实现多个抽象类。 既然Kotlin是一个相当新鲜的语言,我想知道为什么抽象类不会被抛弃? 接口看起来很好用,对抽象类很少需要。 详细说明:Kotlin支持接口中的具体功能实现,例如: interface Shiny { fun shine(amount : Int) // abstract function fun reflect(s : String) { print ("**$s**") } // concrete function } 有人可以提供一个强大的抽象类的实例吗?

gradle无法使用kotlin类编译java类

我有一个包含“projectA”的gradle 4.1多项目,其中包含2个子文件夹“api”和“implementation”。 多项目使用在主build.gradle的子项目部分中定义的kotlin和java-library插件。 实现项目将API依赖项设置为:projectA:api 在api文件夹中,我在'src / main / java'里有kotlin和java文件,在实现项目中,我正在从API创建一个kotlin类的新实例。 在Intellij Idea里面,我没有任何编译错误; 但是当我编译整个项目使用gradle我有一个error: cannot find symbol 。 就好像compileJava不能访问文件夹kotlin-classes 。 在build/kotlin-classes ,我看到了我的file.class类文件也在build / classes目录下 错误的详细信息: 任务:projectA:api:compileKotlin使用kotlin增量编译 任务:projectA:执行:compileJava(…)错误:找不到符号(导入失败) 更新1 :删除Java库解决了我的问题

Kotlin扩展bug

我有个问题。 我有一个旧的项目,写在kotlin.It是1.0.2版本,但我有一个编译器扩展。 java.lang.ClassNotFoundException: com.intellij.util.containers.EmptyIterator 它是build.gradle应用程序文件: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'io.fabric' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "eu.***.**.**" minSdkVersion 16 targetSdkVersion 23 versionCode 7 versionName "1.0.13" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main.java.srcDirs += 'src/main/kotlin' } lintOptions { […]

Android库不能编译kotlin

我的项目有两个项目: main project和library project 。 main project依赖library project 。 现在我想用kotlin他们两个。 我已经将我的common rx extension code添加到library project : fun String.rxRequest(@NotNull builder: (Request.Builder) -> Unit): Observable<Response> = Observable.create<Response> { var mBuilder: Request.Builder = Request.Builder().url(this) builder.invoke(mBuilder); it.onNext(HttpClient.create().newCall(mBuilder.build()).execute()) it.onCompleted() }.subscribeOn(Schedulers.from(THREAD_POOL_NET)); 然后我在我的main project调用这个函数: "http://www.xxx.xxx".rxRequest { val requestBody = FormEncodingBuilder().add("code", code).build() it.post(requestBody) .header("XRDid", appInfo.deviceId) } 它建立失败: LoginPresenter.kt: Unresolved reference: rxRequest library project构建成功,生成在build文件夹中的kotlin […]

Kotlin中活动与片段之间的交流

当谷歌宣布Kotlin为Android开发的官方语言时,我正在尝试使用Kotlin来构建一个应用程序。 问题:如何使用Kotlin在活动和片段之间进行交流? 谢谢!。

Kotlin:onGlobalLayout没有被调用

我正在使用Kotlin,并使用onGlobalLayout来加载图像视图。 通过loadUrl。 没有使用afterMeasured,我的图像加载得很好,但有时由于高度为0,它崩溃。 所以我想使用onGlobalLayout,我在我的扩展功能afterMeasured定义如下。 然而不知何故,onGlobalLayout永远不会被调用。 我的代码有什么问题? override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_ministry) actionBar?.setDisplayHomeAsUpEnabled(true) model = intent.getSerializableExtra(Constants.ACTIVITY_NAVIGATE_MINISTRY) as Model.Ministries actMinistryImage.loadUrl(model.photo) } fun ImageView.loadUrl(url: String?, placeholder: Int = R.drawable.ministries_blank) { this.afterMeasured { val transformation = FixRatioTransformation(this, true) Picasso.with(context).load(url).error(placeholder).transform(transformation) .placeholder(placeholder).into(this) } } inline fun <T: View> T.afterMeasured(crossinline f: T.() -> Unit) { viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { override […]

Kotlin的文件命名约定

Kotlin删除了Java“一个顶级公共类每个文件”的限制,我学会了爱。 我想知道是否有理由在这里讨论这个问题,以及是否有一些指导方针来处理这种新的自由?