android - 尝试使用 Anko verticalLayout 时出现 EOFException
问题描述
按照教程,我通过在 app 模块中添加我的 build.gradle 来导入 Anko 库:
implementation "org.jetbrains.anko:anko-sdk25:0.10.5"
implementation "org.jetbrains.anko:anko-appcompat-v7:0.10.5"
我试试这个例子:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import org.jetbrains.anko.*
class StartActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
verticalLayout {
editText {
hint = "Enter your name"
}
button("ECHO"){
setOnClickListener {
toast("Button clicked")
}
}
}
}
}
出于某种原因,`import org.jetbrains.anko.* 得到了很好的表现,AndroidStudio 通过将其作为红色来显示verticalLayout 的错误。当我将鼠标悬停在它上面时,我得到了错误:
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)
at org.jetbrains.kotlin.metadata.builtins.BuiltInsBinaryVersion$Companion.readFrom(BuiltInsBinaryVersion.kt:29)
at org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment.readProto(MetadataPackageFragmentProvider.kt:136)
at org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment.computeMemberScope(MetadataPackageFragmentProvider.kt:105)
at org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment.access$computeMemberScope(MetadataPackageFragmentProvider.kt:72)
at org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment$memberScope$1.invoke(MetadataPackageFragmentProvider.kt:96)
at org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment$memberScope$1.invoke(MetadataPackageFragmentProvider.kt:72)
at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedLazyValue.invoke(LockBasedStorageManager.java:346)
at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedNotNullLazyValue.invoke(LockBasedStorageManager.java:402)
at org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment.getMemberScope(MetadataPackageFragmentProvider.kt:128)
at org.jetbrains.kotlin.descriptors.impl.LazyPackageViewDescriptorImpl$memberScope$1.invoke(LazyPackageViewDescriptorImpl.kt:46)
at org.jetbrains.kotlin.descriptors.impl.LazyPackageViewDescriptorImpl$memberScope$1.invoke(LazyPackageViewDescriptorImpl.kt:30)
at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedLazyValue.invoke(LockBasedStorageManager.java:346)
at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedNotNullLazyValue.invoke(LockBasedStorageManager.java:402)
at org.jetbrains.kotlin.resolve.scopes.LazyScopeAdapter.getWorkerScope(LazyScopeAdapter.kt:23)
at org.jetbrains.kotlin.resolve.scopes.AbstractScopeAdapter.getContributedClassifier(AbstractScopeAdapter.kt:44)
at org.jetbrains.kotlin.descriptors.FindClassInModuleKt.fin...
我该怎么做才能不再抛出此错误?
解决方案
尝试将您的导入更改为以下内容:
import org.jetbrains.anko.button
import org.jetbrains.anko.editText
import org.jetbrains.anko.toast
import org.jetbrains.anko.verticalLayout
它还编译并运行:(剪掉一些工具栏,因为它有一个项目名称)
这是我的依赖项列表,这是一个全新的项目,所以一切都是默认的:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.anko:anko-sdk25:0.10.5"
implementation "org.jetbrains.anko:anko-appcompat-v7:0.10.5"
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
即使将其更改为您发布的内容,也对我有用:
可能与您的 kotlin 版本或 android studio 错误有关,请尝试更新您的 IDE,对于我正在使用的这个默认项目
Gradle: 3.4.0
Kotlin: 1.3.31
和这个版本的 android studio(希望这有帮助):
Android Studio 3.4
Build #AI-183.5429.30.34.5452501, built on April 10, 2019
JRE: 1.8.0_152-release-1343-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.6
旁注:我意识到 OP 没有setContentView
,所以我想我也必须尝试一下,但是:
推荐阅读
- html - 在按钮单击时将选定的值从 mat-select 发送到控制器
- android - V1 签名的 Release APK 不适用于 Android Q 测试版,但适用于 V2 签名的 APK
- git - 在合并请求中压缩新提交
- javascript - 从 DOM 中删除图像 url
- datetime - 如何在 ionic 3 中设置最小日期和时间
- javascript - VueJS - 绑定自定义道具不适用于 b-form 组件
- python-3.x - 我想删除特定值不增加的行。有更快/更优雅的方式吗?
- c# - 如何计算具有相似时间跨度的一天中的时间跨度总和
- spring - 使用 powermock 和 junit 运行 Spring Boot 集成测试时出错?
- node.js - Node.js - Async.js 映射函数只显示第一次迭代的结果?