我试图执行重试当我的Observable时,会出现一个时间,但我有奇怪的错误下划线在IDE Android Studio 3.0 这里是代码: rxRssiRepository.onRssiUpdate() //returns Observable .timeout(10, TimeUnit.MILLISECONDS) .retryWhen { t: Observable -> t.flatMap { error: Throwable -> if (error is TimeoutException) { stopLocationUpdates() Log.v(“TIMEOUT”, “TIMEOUT RSSI EVENTS”) Observable.just(Observable.empty()) } else { Observable.error(error) } } } .concatMap { t: RssiEvent -> appendRssiEvent(t) } .publish() IDE强调了.flatMap运算符的红色,并说: types推断失败:没有足够的信息来推断参数R in fun flatMap(mapper:((t:Throwable)→ObservableSource)!):Observable! 请明确指定。 “if”运算符也是如此: 控制流expression式的types推断失败。 请明确指定其types […]
我刚开始研究vert.x并从https://github.com/vert-x3/vertx-examples/tree/master/kotlin-examples/web下载了一个示例restful项目。 根据自述,它应该能够自动重新部署时,有任何文件更改,但似乎没有工作。 不管我多少次更改主类文件,都不能反映出来。 我所做的是: 运行“gradlew run” C:\vertx-examples-master\kotlin-examples\web>gradlew run :compileKotlin UP-TO-DATE :compileJava UP-TO-DATE :copyMainKotlinClasses UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :run Jan 08, 2018 7:16:04 PM io.vertx.core.impl.launcher.commands.Watcher INFO: Watched paths: [C:\vertx-examples-master\kotlin-examples\web\.\out] Jan 08, 2018 7:16:04 PM io.vertx.core.impl.launcher.commands.Watcher INFO: Starting the vert.x application in redeploy mode Starting vert.x application… 58d1ec56-6d4c-4209-9fba-71cd6f54101c-redeploy Jan 08, 2018 7:16:05 PM io.vertx.core.impl.launcher.commands.VertxIsolatedDeployer INFO: Succeeded […]
我的布局文件是 – 我从MapActivity调用mapFragment.getMapAsync(this),但该函数不适用于此variables。 但以旧的方式使用findViewById工作正常。 val mapFragment = getSupportFragmentManager() .findFragmentById(R.id.map) as SupportMapFragment 现在我想知道如何从ID字段直接调用getMapAsync函数作为Kotlin Android扩展正在为我的布局中的其他视图。 任何帮助表示赞赏。
我正在Kotlin写我的第一个Android应用程序。 我想要做的是发出一个HTTP请求(排空),以获取一些数据,应写入对象的属性。 直到Volley响应监听器被保留为止,这一切都工作的很好。 之后,属性返回null。 这是来电者: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val haiku = Haiku(applicationContext) haiku.load() // populates 3 properties (author, body, title) haiku.show() // author, body, title are back to null here } } 被调用者: class Haiku(var context: Context? = null, var title: String? = null, var body: String? […]
和anko一样,你可以这样编写回调函数: alert { title = “” message = “” yesButton { toast(“Yes”) } noButton { toast(“No”) } } 我怎样才能创建一个这样的嵌套function? 我试图创建它像下面,但似乎并没有工作。 class Test { fun f1(function: () -> Unit) {} fun f2(function: () -> Unit) {} } 现在,如果我用这个扩展function, fun Context.temp(function: Test.() -> Unit) { function.onSuccess() // doesn’t work } 从Activity调用它: temp { onSuccess { toast(“Hello”) } […]
在kotlin中,如何使主构造函数的setter属性为private? class City(val id: String, var name: String, var description: String = “”) { fun update(name: String, description: String? = “”) { this.name = name this.description = description ?: this.description } } 我想让属性name的setter是私有的,而且它的getter是公开的,我该怎么办?
在Kotlin中, itemclicklistener如何使用大视图显示滑动图像: 我的代码到目前为止: override fun onBindViewHolder(holder: MyViewHolder?, position: Int) { holder?.textdesc?.text = descarr[position].desc val url = descarr[position].url Glide.with(mContext).load(url).into(holder!!.rurl) 在这里我想实现onclicklistener在大视图中查看滑行图像。
让我知道在Kotlin中可变参数的重要性,如果有任何文件或一些有用的链接。 请分享。
如果我们有一个val txt: kotlin.String = “1;2;3;” 并且想把它分成一个数字数组,我们可以尝试以下方法: val numbers = string.split(“;”.toRegex()) //gives: [1, 2, 3, ] CharSequence.split的结果中包含尾随的空String 。 另一方面,如果我们看Java String ,结果是不同的: val numbers2 = (string as java.lang.String).split(“;”) //gives: [1, 2, 3] 这一次,使用java.lang.String.split ,结果不包括尾随的空String 。 这个行为实际上是给定的相应的JavaDoc: 此方法的工作原理与通过调用给定expression式和极限参数为零的双参数拆分方法一样。 结尾的空字符串因此不包括在结果数组中 。 在Kotlin的版本中, 0也是这里记录的默认limit参数,但是内部Kotlin在调用 java.util.regex.Pattern::split时将0映射为负值-1 。 nativePattern.split(input, if (limit == 0) -1 else limit).asList() 它似乎正在按预期工作,但我想知道为什么语言似乎限制了Java API,因为不再提供0的限制。
Kotlin允许命名与现有类相同的函数,例如HashSet具有初始化函数可以像这样实现: fun HashSet(n : Int, fn: (Int) -> T) = HashSet(n).apply { repeat(n) { add(fn(it)) } } 使用时,它看起来像一个正常的HashSet构造函数: var real = HashSet() var fake = HashSet(5) { “Element $it” } 这应该避免或鼓励,为什么?