Tag: kotlin

解析xml kotlin android

我有这样的XML: Сегодня вас могут здорово огорчить. Если от расстройства все начнет валится из рук, просто спокойно сядьте и тихонько подождите хорошей новости. Сегодня у вас могут возникнуть проблемы на личном фронте. Спасти вас от перспективы оказаться не у дел может сухой, рациональный и в высшей степени объективный подход к проблеме. 现在我正在学习kotlin whith翻新。 我包括解析XML的库,而不是我不能理解如何创建对象来解析这个XML。 我有对象: @Root(name […]

Java to Kotlin转换器和可空方法参数

我遇到了一个Java到Kotlin转换器不能将方法参数标记为可空的情况,使我失败的案例。 示例:使用registerActivityLifecycleCallbacks跟踪活动生命周期: registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) {} @Override public void onActivityStarted(Activity activity) {} @Override public void onActivityResumed(Activity activity) {} // … other overriden methods }); 将此代码粘贴到Kotlin结果中: registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle) {} override fun onActivityStarted(activity: Activity) {} override fun onActivityResumed(activity: Activity) {} override fun […]

Kotlin – exception后继续协程

我的问题 exception之后是否可以继续执行协程? 例 try { someMethod1() someMethod2() //Throws an exception! someMethod3() } catch(e: Exception) { //I do not want to call someMethod3 here! //I want the coroutine to resume after the exception inside of the original block. } finally { //I also do not want to call someMethod3 here! //I want the coroutine to resume […]

将用于复制资产文件的java代码转换为Android中的缓存文件夹到Kotlin的最佳实践

我使用这个代码来将Android中的Asset文件复制到缓存文件夹,重点在于它是一个Java代码,我将它转换为Kotlin,但是它看起来更多的是围绕while循环的Java(ish): val file = File(“${cacheDir.path}/$fileName”) val dir = file.parentFile dir.mkdirs() val inputStream = assets.open(fileName) val bufferedOutputStream = BufferedOutputStream(FileOutputStream(file)) val buf = ByteArray(10240) var num = inputStream.read(buf) // Java version: while ((num = fi.read(buf)) > 0) while (num > 0) { bufferedOutputStream.write(buf, 0, num) num = inputStream.read(buf) } bufferedOutputStream.close() inputStream.close() 任何能使Kotlin更为专业的专家。

RxKotlin使用方法引用collectInto()MutableList

以下代码是我尝试将RxJava示例转换为Kotlin。 它应该收集一串Int到MutableList ,但是我得到了大量的错误。 val all: Single<MutableList> = Observable .range(10, 20) .collectInto(::MutableList, MutableList::add) 错误: Error:(113, 36) Kotlin: Type inference failed: Not enough information to infer parameter T in inline fun MutableList(size: Int, init: (index: Int) -> T): MutableList Please specify it explicitly. Error:(113, 49) Kotlin: One type argument expected for interface MutableList : List, MutableCollection defined […]

处理程序每​​5秒运行一次任务Kotlin

我想每5秒运行一段代码。 我有一个处理程序实现这个麻烦。 Kotlin如何做到这一点? 这是我到目前为止。 还要注意,variablesTimer_Preview是一个Handler。

Android Studio转换为Kotlin:在某些情况下使用@JvmStatic

我一直在Android上使用Kotlin相当集中。 这确实使编程乐趣了。 尽管如此,在某些情况下(主要是util类,名称应该是简短的),当自动将Java转换为Kotlin时,我希望在静态方法上使用@JvmStatic,而不是将调用者转换为MyClass.Companion.Bar 。 也就是说,在一些特定的情况下,拥有这个将会很好 public static foo(Barian bar) 转换成 @JvmStatic fun foo(bar:Barian) 所以我可以维护从Java的短的调用语法: MyClass.foo(bar) 而不是 MyClass.Companion.foo(bar) 显然,在大多数情况下,我认为这是不好的方式,因为很多原因,比如未来的兼容性,非Kotlin的精神等等,但是在少数情况下,它可以使Java代码(使用我的类)更短。

吸毒者和安置者在Kotlin

例如,在Java中,我可以自己编写getter(由IDE生成),也可以在lombok中使用@Getter之类的Annotations – 这非常简单。 但是Kotlin 默认有getter和setter 。 但我不明白如何使用它们。 我想说的是,可以说 – 类似于Java: private val isEmpty: String get() = this.toString() //making this thing public rises an error: Getter visibility must be the same as property visibility. 那么吸气剂如何工作呢?

Android Studio / IntelliJ中的^ let注释是什么?

在一个封闭的框架中,我有时候会在我的陈述之前看到注释,而我不清楚它们的含义或者为什么他们在那里。 是否表示将返回一个值作为let调用的值? 截图:

Kotlin数据类拷贝方法不是深拷贝所有成员

有人可以解释Kotlin数据类的copy方法是如何工作的吗? 对于一些成员来说,(深)副本似乎并没有真正创建,而且引用仍然是原来的。 fun test() { val bar = Bar(0) val foo = Foo(5, bar, mutableListOf(1, 2, 3)) println(“foo : $foo”) val barCopy = bar.copy() val fooCopy = foo.copy() foo.a = 10 bar.x = 2 foo.list.add(4) println(“foo : $foo”) println(“fooCopy: $fooCopy”) println(“barCopy: $barCopy”) } data class Foo(var a: Int, val bar: Bar, val list: MutableList = […]