为什么在Android Studio中重新启动后用Kotlin编写的界面消失了?

我有一个用Kotlin编写的接口来进行REST调用(到目前为止): import io.reactivex.Observable import okhttp3.ResponseBody import retrofit2.Response import retrofit2.http.Body import retrofit2.http.POST const val PUSH_ENDPOINT = “prices/v1” interface ArticleSearchRestAdapter { @POST(“$PUSH_ENDPOINT/articles/search”) fun register(@Body articlerequest: ArticleRequest): Observable<Response> } 正如我所说,这个工程到目前为止,但在Android Studio的电脑重新启动后,图标变成了 从 至 。 然后其他使用ArticleSearchRestAdapter的类无法find此接口并标记为红色。 这是Androuid Studio中的错误吗? 哪里不对? IDE:Android Studio 3.0 Beta 6

Kotlin / Android应用程序 – 从外部活动更改视图元素

我正在使用kotlin lang来创建我的Android应用程序。 我想创建一个对象(单身人士),专门用于动态地(如按钮等)模仿我的主要活动的视图组件,并将由我的主要活动本身使用。 出现了一些问题。 首先,对象是(当然)不是活动types,所以我不能使用例如findViewById和其他活动的function等我试图通过传递主要活动的对象的构造函数来解决这个问题,但它是不允许的 – 因为对象不能他们的构造函数。 此外,我不知道,如果这个应用程序设计是可以接受的,至少有良好的做法。 如果不是真的 – 我应该使用什么样的设计模式来分离如何改变布局的逻辑和只修改视图元素的代码? 提前感谢您的任何建议。

UNRESOLVED_REFERENCE未解决的参考:isInitialized

我试图使用Kotlin的检查lateinit属性状态的新function,但得到了这个编译时错误Unresolved reference: isInitialized 我已经用kotlin_version kotlin_version = ‘1.2.0-beta-31’ (android studio版本为3.0)的kotlin版本来配置我的build.gradle文件,并且还用相同的版本更新了kotlin插件。 这是我的代码片断,我正在使用isInitialized检查。 还包括一个反映库 compile group: ‘org.jetbrains.kotlin’, name: ‘kotlin-reflect’, version: ‘1.2.0-beta-31’ 。 lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (::k.isInitialized) { k = SomeObjectType() } return k }

为“Number Classes”重载+和+ =运算符

我想为封装简单Number的类创建扩展函数。 例如DoubleProperty 。 我遇到了这个问题,我不能同时重载+和+=运算符。 我不想创建一个行为,通过以下测试: class DoublePropertyTest { lateinit var doubleProperty: DoubleProperty @Before fun initialize() { doubleProperty = SimpleDoubleProperty(0.1) } @Test fun plus() { val someProperty = doubleProperty + 1.5 assertEquals(someProperty.value, 1.6, 0.001) } @Test fun plusAssign() { val someProperty = doubleProperty doubleProperty += 1.5 //error if + and += are overloaded assert(someProperty === doubleProperty) […]

如何在Kotlin html框架中表示Web组件标签?

Kotlin有代表html的框架,比如kotlinx 。 如何在这样的框架中表示Web组件标签? 例如,如果我想使用Polymer组件,是否必须扩展这些框架以包含每个Polymer组件?

GSON不能用自定义getter来反序列化Kotlin类

我有一堂课 class Address { var address1: String? = null } 简单的JSON String jsonString = “{\”address1\”:\”test\”}”; 所以我想要反序列化,所以我只是写 Gson gson = new GsonBuilder().create(); Address address = gson.fromJson(jsonString, Address.class); 它完美的作品。 但是,如果我添加自定义getter class Address { var address1: String? = null get() = address1 ?: “” } 我正在得到 java.lang.StackOverflowError at ru.reksoft.okey.models.Address.getAddress1(Address.kt:8) at ru.reksoft.okey.models.Address.getAddress1(Address.kt:8) //and here are a lot of same […]

这是反应堆单声道的错误吗?

使用Reactor时我注意到了一些奇怪的行为。 情况是这样的: 拨打其余的API端点,获取一个包装在Mono中的值 用另一个值调用另一个API端点,检索另一个包装在Mono中的值 压缩两个结果 看起来会发生什么是onSubscribe(FluxMap.MapSubscriber)被调用两次的第一个API调用,然后打开两个连接,并产生两个结果。 传递给第二个API调用的结果是非确定性的,取决于第二个API调用是在前两个调用中的第二个调用完成之前还是之后执行。 这是使用Kotlin和Springboot WebClient重现问题的代码示例。 API端点根据路径参数生成单个GUID或多个GUID。 我使用第一个调用的结果中的第一个数字作为第二个调用中的路径参数: val api = “https://www.uuidgenerator.net/api/guid” val client = WebClient.builder() .baseUrl(api) .build() @Test public fun reactorBug() { val firstResult = callApi().doOnSuccess { r -> println(“callApi returned: $r”) } val secondResult = callApi(firstResult).doOnSuccess { r -> println(“callApi(result) returned: $r”) } println(Mono.zip(firstResult, secondResult, { first, second -> “First […]

在Kotlin填充字符串

我试图在Kotlin中填充字符串以在控制台输出上实现一些正确的对齐。 沿着这些线路的东西: accountsLoopQuery – “$.contactPoints.contactPoints[?(@.contactAccount.id)]” brokerPassword – ***** brokerURI – tcp://localhost:61616 brokerUsername – admin contactPointPriorityProperties – “contactPointPriority.properties” customerCollection – “customer” customerHistoryCollection – “customer_history” defaultSystemOwner – “TUIGROUP” 我最终以这种方式编码 – 用Java的String.format作弊: mutableList.forEach { cp -> println(String.format(“%-45s – %s”, cp.name, cp.value)) } Kotlin库有没有适当的方法?

是否有可能将数据类的实例解构成类的属性?

我有一个数据类MyDataClass : data class MyDataClass(val a: Int, val b: Int) 和具有两个属性的类MyClass 。 我想解构一个MyDataClass的实例,所以a和b被分配给MyClass属性,而不是声明新的variables: class MyClass { val a: Int val b: Int init { val mdc = MyDataClass(1, 4) (a, b) = mdc //error } }

如何把一个可变集合变成一个不可变的集合

我写了一小段代码,在内部处理我的数据在一个可变的映射中,而这个映射又具有可变列表。 我想公开我的数据给API用户,但是为了避免任何不安全的数据发布,我想把它暴露在不可变的集合中,即使在内部被可变的数据处理时也是如此。 class School { val roster: MutableMap<Int, MutableList> = mutableMapOf<Int, MutableList>() fun add(name: String, grade: Int): Unit { val students = roster.getOrPut(grade) { mutableListOf() } if (!students.contains(name)) { students.add(name) } } fun sort(): Map<Int, List> { return db().mapValues { entry -> entry.value.sorted() } .toSortedMap() } fun grade(grade: Int) = db().getOrElse(grade, { listOf() }) fun […]