Tag: kotlin

用翻新和moshi填充微调

我是Android开发人员(包括java或kotlin)的初学者。 我正在尝试用改造和moshi从json填充微调器,但我不知道如何将其填充到微调器中。 说实话,我不知道Json数据的返回是否正确,因为Log.d()返回不是作为dump()laravel或php的细节。 脚本在活动onCreate(请阅读脚本的评论,我把Log.d()调试结果) Log.d() val task = object : AsyncTask<Void, Void, Response<List>>() { override fun doInBackground(vararg params: Void): Response<List> { val typeAPI = RestAPI() val callResponse = typeAPI.getNews() val response = callResponse.execute() return response } override fun onPostExecute(response: Response<List>) { if (response.isSuccessful) { val news = response.body() Log.d(“test:”, news!![0].data.toString()) // method ‘java.lang.String com.example.mockie.tigaer.api.TypeDataResponse.toString()’ on […]

Docker化Springboot应用程序

上下文:这是一个用Kotlin编写的应用程序,并使用Maven的Spring引导。 基本上,我想知道我在做什么。 运行mvn install然后用相应的jar文件创建target文件夹。 因此,Dockerfile将只是将jar文件复制到容器的工作目录中,然后运行java -jar WHATEVER.jar 。 简单的Dockerfile FROM openjdk:8-jre-alpine COPY target/app-DEV-SNAPSHOT.jar . EXPOSE 8089 CMD [“java”, “-jar”, “./app-DEV-SNAPSHOT.jar”] 但是我想说,使用多级构建对我来说更有意义,并且在第一阶段生成jar文件,并在第二阶段执行它。 我试过这个第二种方法,但是我面临着一个与main class doesn’t exist 多阶段Dockerfile: FROM maven:3.5.2-jdk-8-alpine as BUILD ENV APP_HOME=/usr/src/service COPY ./src /usr/src/service COPY pom.xml /usr/src/service WORKDIR /usr/src/service RUN mvn install FROM openjdk:8-jre-alpine COPY –from=BUILD /usr/src/service/target/app-DEV-SNAPSHOT.jar ./ EXPOSE 8080 CMD [“java”, “-jar”, “./app-DEV-SNAPSHOT.jar”] […]

为什么我不能在这个Rx变压器中使用接口作为通用types?

我在Kotlin中有以下数据类作为参考: interface GenericResponse { val error: Error? fun hasErrorObject(): Boolean = error != null } data class LoginResponse( val name: String, val auth: String, @SerializedName(“error”) override val error: Error? = null ) : GenericResponse LoginResponse实现GenericResponse 。 我正在使用以下方式的Retrofit API: @POST(“******”) fun createSession(@Body body: LoginBody): Single<Response> 此外,如果存在如下所示,我使用一个变换器从LoginResponse提取错误: class ExceptionTransformers { fun wrapRetrofitExceptionSingle(): (Single<Response>) -> Single { return […]

面向对象的小型到中型SQL数据库设计

作为一个个人项目,我想在Kotlin做一个“预算管理”应用程序,用户可以在其中输入价格和数量等各种项目和描述符。 我想将数据存储在H2数据库中,然后使用预定义的函数进行过滤和查看数据。 例如,如果用户想要知道他们在两个日期之间花了多少钱,或者他们的总支出在两个日期之间增加或减少了多少百分比,或者他们在用户定义的目标(例如储蓄账户)上的进展如何。 这是我的Github项目。 我正在使用SQL“Kotlin Exposed”API。 例如,这是我的“基本”表: package tables import org.jetbrains.exposed.sql.Column import org.jetbrains.exposed.sql.Table object Essential : Table() { val id: Column = Essential.integer(“id”).autoIncrement().primaryKey() val name: Column = Essential.varchar(“name”, length = 25) val desc: Column = Essential.varchar(“description”, length = 50) val price: Column = Essential.varchar(“price”, length = 9) val quant: Column = Essential.varchar(“quantity”, length = 25) […]

为什么房间实体不能在Android中使用不可变属性

我一直在探索房间数据库对象映射库,我觉得奇怪。 正如这个答案所暗示的,实体数据模型不能具有不可变属性。 但我检查了谷歌与kotlin持久的例子 , Room工程与不可改变的属性。 请从示例中检查这个数据类。 什么可能是这种行为的原因? 如果我们可以创建不可变的值( val属性),这可能是一个很好的function,因为这限制了程序员在创建对象之后更改唯一标识符(如id)。

使用RxAndroid处理onKeyDown

我使用https://github.com/mkoslacz/Moviper为我的应用程序的Android电视盒。 只有一个活动与多个子碎片。 我只想在事件尚未处理时才将onKeyDown传播到子片段。 不使用RxJava很容易。 我可以返回一个布尔值来告诉事件已经处理或不。 有没有一种方法可以使用RxJava来处理? 我使用Kotlin作为源语言。 这是我正在尝试做的事情。 class MainActivity : ViperAiPassiveActivity(), HomeContract.View { private val keyPressSubject = BehaviorSubject.create() private lateinit var predicate: (KeyEvent) -> Boolean override fun keyPresses(predicate: (KeyEvent) -> Boolean): Observable { this.predicate = predicate return keyPressSubject } override fun createPresenter() = HomePresenter() override fun getLayoutId(): Int { return R.layout.activity_main } override fun […]

将插件升级到3.0.0时出现Gradle构建错误(manifestOutputFile)

将Gradle插件版本升级到3.0.0( classpath “com.android.tools.build:gradle:3.0.0” )后,如果我尝试清理或生成项目,则会出现以下错误: A problem occurred configuring project ‘:app’. > Manifest Tasks does not support the manifestOutputFile property any more, please use the manifestOutputDirectory instead. For more information, please check https://developer.android.com/studio/build/gradle-plugin-3-0-0- migration.html * Try: Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output. […]

禁止使用方法或类的“使用属性访问语法”

在我的项目中,我有一个委托(用Java编写)用于通过RPC获取数据,其中大部分方法以“get”开始,一些不需要参数,所以Kotlin建议用属性访问语法替换对它们的调用,而不是实现属性语义(当然,因为他们执行网络请求),所以我想在默认情况下禁止所有这些方法的检查,而不是每个调用的地方(是的,我知道@Suppress注释块,它和我所需要的完全相反)。 有没有任何解决方案,除了重命名,所以他们不会以“得到”开始?

关键字lateinit是不必要的?

我正在学习Kotlin的过程中,阅读关于lateinit关键字使我怀疑它的用处。 考虑这个代码: var testString: String? = null lateinit var lateTestString: String fun print() { print(testString?.length) print(lateTestString.length) } 这里得到字符串长度的唯一区别是通过使用?.来检查它是否为null ?. 运营商。 在访问属性或调用方法时,是否使用lateinit快捷方式不必添加额外的问号? 就这一点而言,我认为在访问lateinit一个问题时,不得不添加额外的问号而不是获得一个exception。 更多的研究表明,对于那些variables尚未初始化的注入和/或unit testing来说, lateinit是很好的选择,但是它是可以的。 然而,这不值得有这个额外的东西?. 而不是仅仅. 不冒险例外?

Room Persistance Library在插入和删除时致命错误11(SIGEGV)崩溃

我一直在试图在我的项目中使用房间数据库,但它一直在崩溃,我不能确定是什么原因是… 这是我的情况: 当用户在对话框中输入一个日志点并按下ok时,这个函数被调用 fun manualOkClicked() { /*Check if all fields are valid ( if they are, location is created and folderId is saved )*/ if (logpoint.canCreateLocation(context) && logpoint.canSelectFolder(view?.getSelectedFolder())) { DataSource.saveLogpoint(logpoint) } } 这里是我如何保存日志点: fun saveLogpoint(logpoint: UserLogpoint) { Thread({ mydb.logpointDao().insert(logpoint) }).start() } 而我的应用程序崩溃与此日志: 12-27 16:17:31.108 17932-17941/com.example.myproject.debug A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x61724474 […]