我真的不确定我是否明白当你写Kotlin代码时会发生什么。 我只写了一些,我看到Eclipse指向我的项目的构建文件夹,即我的项目的bin文件夹没有任何.class文件。 它只有.kt Kotlin源文件。 那是什么意思? 这种语言是动态编译的吗? 是否解释? 如何为我的项目设置%CLASSPATH%?
我有一个运行我的androidTest的问题。 这是我在gradle中的设置: apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ apply plugin: ‘kotlin-kapt’ android { compileSdkVersion 26 defaultConfig { applicationId “com.blabla.shoppinglistapp” minSdkVersion 17 targetSdkVersion 26 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } ext.daggerVersion = ‘2.11’ ext.roomVersion = ‘1.0.0’ ext.mockitoVersion = ‘2.11.0’ dependencies […]
我创建了以下Kotlin数据类: @JsonInclude(JsonInclude.Include.NON_NULL) public data class ITunesArtist(val artistName: String, val artistId: Long, val artistLinkUrl: URL) (一个数据类是一个Kotlin类,可以在编译时自动生成equals,hashcode,toString等 – 节省时间)。 现在我试着使用Spring RestTemplate填充它: @Test fun loadArtist() { val restTemplate = RestTemplate() val artist = restTemplate.getForObject( “https://itunes.apple.com/search?term=howlin+wolf&entity=allArtist&limit=1”, ITunesQueryResults::class.java); println(“Got artist: $artist”) } 它失败: Could not extract response: no suitable HttpMessageConverter found for response type [class vampr.api.service.authorization.facebook.ITunesArtist] and content type [text/javascript;charset=utf-8] […]
我正在用multidex面临一个奇怪的问题。 我已经有很长一段时间我的应用程序multidexed,但最近我不能再建立它了。 它在项目中配置Kotlin后开始。 Android Studio中的“运行”选项有效 :该应用在我的设备中成功运行。 但是,如果我尝试“构建APK”选项或运行gradlew assembleDebug ,生成失败,通常的exception: Error:The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html Error:com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 但是, 在添加Kotlin之前 , multidex正常工作 。 我可以在添加Kotlin之前签出提交,构建apk并检查是否有3个.dex文件,总计超过10万个。 一些关键细节: Gradle 4.1,Gradle插件3.0.1 构建工具版本26.0.2 Kotlin版本1.2.0 在编程之后,应用程序不需要multidex,但是我并不想要进行调试编译,此外,这应该是工作。 以下是完整的build.gradle脚本: buildscript { repositories { mavenCentral() […]
在我的Kotlin应用程序中,我有一些ImageViews (在activity_main.xml ): imageView_0 , imageView_1 , imageView_2和imageView_3 。 我如何从0到3循环访问视图? 这不会起作用: val imageView: ImageView = findViewById(“R.id.imageView_” + index) as ImageView
我最近更改了Linux发行版,并且忘记了在IntelliJ的Kotlin中运行配置的键盘快捷键。 先谢谢你。
我在Kotlin中有RecyclerView适配器,当用户点击categoryPhoto时,我想打开一个新的活动。 我应该如何执行这个? class CategoryAdapter(private val categoryList: List, private val context: Context) : RecyclerView.Adapter() { class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { var categoryName = view.text_view_category_name var categoryPhoto = view.image_view_category var cardView = view.card_view_category } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = MyViewHolder(parent.inflate(R.layout.category_list_row)) override fun onBindViewHolder(holder: MyViewHolder, position: Int) { val category = categoryList[position] // Set height […]
如果你看: https://repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugin/ 目前的版本是1.1.3,但是: https://repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-js-library/ 回到1.0.7。 我怎样才能触发这个更新?
科特林代码是这样的: class Foo { companion object { fun a() : Int = 1 } fun b() = a() + 1 } 可以平凡地改变 object FooStatic { fun a() : Int = 1 } class Foo { fun b() = FooStatic.a() } 我知道,伴侣对象可以用来作为真正的Java静态函数,但是使用伴随对象还有其他的好处吗?
在Github上的Injekt文档中,它说范围是存在的,但我不清楚如何使用它们为每个Android活动创建一个本地范围,它们有自己的工厂和实例,但也可以使用父范围中的某些范围。 Injektvariables似乎是一个全局范围,我看到InjektScope和InjektScopeMain但没有使用它们的例子,或者它们如何链接到父范围。 我看到的唯一方法是创建单独的InjektScope实例并调用它们,或者将Injekt作为全局范围调用。 这工作,但笨拙。 没有明显的方式来链接,嵌套,委托或inheritance。 这是支持的,如果是的话如何? 注意: 这个问题是由作者故意编写和回答的( 自我回答问题 ),所以对于常见的Injekt + Kotlin主题的习惯性的回答在SO中出现。 其他答案也欢迎,还有其他样式的如何做到这一点! 披露,我是Injekt图书馆的作者。