匕首与Kotlin上的Mvp – Android

我是刚刚进​​入Kotlin的Android开发人员,我一直试图在Kotlin上设置Mvp Dagger应用程序,但我无法弄清楚发生了什么事情。 我继续得到这个错误: Error:dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code. 这是我的代码: KotlinApplication: class KotlinApplication: MultiDexApplication(), HasActivityInjector { @Inject lateinit var injector: DispatchingAndroidInjector override fun onCreate() { super.onCreate() inject() } override fun activityInjector(): AndroidInjector { return […]

与Kotlin多平台一起使用Gradle子项目

我正在使用Kotlin多平台(JVM&JS),它在IDEA中创建了三个项目: demo , demo-js和demo-jvm 。 我想将通用代码拆分成更多的子项目/子模块。 假设我加上commonmod ; 我如何编译? 现在,对于gradle run -p demo-jvm ,错误是: demo/demo-js/src/main/kotlin/demo/commonmod/example.kt: (3, 12): Actual function ‘getPlatform’ has no corresponding expected declaration 但我认为我做这个根本错误,因为我不知道什么应该取决于什么(尽管我尝试了一些迭代)。 如果我解决了这个错误,我会得到其他的,然后再一个,直到我回到这个。 作为一个最小但仍然很大的例子 ,我有: 演示/ settings.gradle : rootProject.name = ‘demo’ include ‘demo-jvm’, ‘demo-js’, ‘commonmod’ 演示/ build.gradle : buildscript { … } apply plugin: ‘kotlin-platform-common’ repositories { mavenCentral() } dependencies { […]

为什么Kotlin在运算符重载之外使用运算符修饰符?

我对Kotlin中operator修饰符的用法有点困惑。 例如,Kotlin在解构声明和属性委托中使用了operator修饰符,恕我直言(原谅我的无知),有点混淆,因为这两种情况都在运算符重载之外。 解构: operator fun Map.iterator(): Iterator<Map.Entry> = entrySet().iterator() operator fun Map.Entry.component1() = getKey() operator fun Map.Entry.component2() = getValue() for ((key, value) in map) { // … } 属性委托: interface ReadOnlyProperty { operator fun getValue(thisRef: R, property: KProperty): T } interface ReadWriteProperty { operator fun getValue(thisRef: R, property: KProperty): T operator fun setValue(thisRef: R, property: […]

kotlin文件不支持用markdown写的流程图吗?

我正在使用kotlin开发android应用程序。 我们知道kotlin使用markdown来记录它的代码。 所以我试着用markdown语法来画一个流程图如下: /** * Created by zhangruofan on 16-3-2. * * “`flow * st=>start: Start|past:>http://www.google.com[blank] * e=>end: End:>http://www.google.com * op1=>operation: My Operation|past * op2=>operation: Stuff|current * sub1=>subroutine: My Subroutine|invalid * cond=>condition: Yes * or No?|approved:>http://www.baidu.com * c2=>condition: Good idea|rejected * io=>inputoutput: catch something…|request * * st->op1(right)->cond * cond(yes, right)->c2 * cond(no)->sub1(left)->op1 * c2(yes)->io->e * […]

伴随对象之外的访问方法 – Kotlin

我对kotlin来说是个新手,我想知道是否有可能,并且如果最好的做法是从协同对象中访问协同对象之外的方法和variables。 例如 class A { fun doStuff(): Boolean = return true companion object{ public fun stuffDone(): Boolean = return doStuff() } } 或类似的东西 谢谢

如何在kotlin中对字符串数组进行排序

如何按字母顺序在kotlin中对以下字符串数组进行排序? val array = arrayOf(“abc”,”bcd”,”xyz”,”ghi”,”acd”)

Kotlin Lambda不在内部调用代码

我遇到了最奇怪的事情。 比方说,我有一个名为“lines.txt”的文本文件。 该文件包含键值对中的行。 test:100 test1:200 test2:300 test3:400 如果我在Kotlin中读取这个文件,列表不是空的,但是输出流中的循环没有被调用。 object App { @JvmStatic fun main(args: Array) { // file containing lines of text val lines = Files.readAllLines(Paths.get(“./hashes.txt”)) // not empty println(lines.size) // write back a modified version PrintWriter(FileWriter(File(“./lines2.txt”))).use { out -> { // this doesn’t get called println(lines.size) lines.forEach { out.println(it.split(“:”)[0]) } } } } } […]

如何调用Kotlin中的ArrayAdapter.addAll方法?

我有一个非常简单的列表(所以没有必要创建一个扩展BaseAdapter的自定义适配器)。 我使用ArrayApdater来实现这一点。 当我想改变适配器的值时,有一个构建错误说有两个allAll方法,kotlin不知道要使用哪一个。 以下是示例代码: val list = Collections.emptyList() // Just for sample. val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, list) // This line is OK // Some work later adapter.clear() adapter.addAll(list) // Here’s the error 错误消息是: Error:(79, 35) Overload resolution ambiguity: public open fun addAll(p0: (MutableCollection..Collection?)): Unit defined in android.widget.ArrayAdapter public open fun addAll(vararg p0: Any!): Unit […]

通用类中的kotlin 1.1.4原语

我在一个对象类中声明了这样一个字段: private val longObjectResourceDecoder = object : ResourceDecoder {} 然后,我通过kapt将这个java代码生成到stub java类中: private static final com.bumptech.glide.load.ResourceDecoder longObjectResourceDecoder = null 它不会编译,因为原始typeslong被用作types参数! 我试过了: 清洁和建设 在Android Studio中将kotlin更新配置为1.1.4 但问题依然存在。 我该如何解决这个问题?

将任何数据转换为Kotlin中的数组

我正在通过从Kotlin的Map加载数据来初始化一个类。 由于这张地图是直接从JSON收集的,我不确定是否存在任何给定的关键字,或者它的价值是我期望的types。 为了安全地解开这个Map,我正在做以下工作,这看起来很完美: a = rawData[“A”] as? String ?: “” 这些数据中的一部分是进一步嵌套的JSON,我将其解包到数组中; 我试图以同样的方式做到这一点: b = rawData[“B”] as? Array ?: arrayOf() 但是,当我尝试使用数组(如上所述),IntelliJ踢了一个小题大做,说 警告:(111,30)Kotlin:不加限制的演员:任何? 到数组 这只是IDE自身扭曲,还是这种方法真的是不安全的arrays,尽管对于其他types看起来是完全安全的?