我正在尝试使用以下命令来执行我的Kotlin类: ./gradlew -q run < src/main/kotlin/samples/input.txt 这是我的HelloWorld.kt类: package samples fun main(args: Array) { println(“Hello, world!”) val lineRead = readLine() println(lineRead) } 这是我的build.gradle.kts : plugins { kotlin(“jvm”) application } application { mainClassName = “samples.HelloWorldKt” } dependencies { compile(kotlin(“stdlib”)) } repositories { jcenter() } 代码执行,但input.txt文件内包含的数据不显示。 这是我得到的输出: Hello, world! null 我希望能够执行上面的gradlew命令,并将input.txt流重定向到stdio。 我可以很容易地在C ++中做到这一点。 一旦我编译我的.cpp文件,我可以运行: ./my_code < input.txt 并按预期执行。 […]
我正在尝试在Kotlin中创建一个zip文件。 这是代码: fun main(args: Array) { var files: Array = arrayOf(“/home/matte/theres_no_place.png”, “/home/matte/vladstudio_the_moon_and_the_ocean_1920x1440_signed.jpg”) var out = ZipOutputStream(BufferedOutputStream(FileOutputStream(“/home/matte/Desktop/test.zip”))) var data = ByteArray(1024) for (file in files) { var fi = FileInputStream(file) var origin = BufferedInputStream(fi) var entry = ZipEntry(file.substring(file.lastIndexOf(“/”))) out.putNextEntry(entry) origin.buffered(1024).reader().forEachLine { out.write(data) } origin.close() } out.close()} 压缩文件被创建,但里面的文件已损坏!
我试图用kotlin完成另一个(android)的活动。 我知道用java做的wat是用下面的代码( https://stackoverflow.com/a/10379275/7280257 ) 第一次活动: BroadcastReceiver broadcast_reciever = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent intent) { String action = intent.getAction(); if (action.equals(“finish_activity”)) { finish(); // DO WHATEVER YOU WANT. } } }; registerReceiver(broadcast_reciever, new IntentFilter(“finish_activity”)); 在其他活动上: Intent intent = new Intent(“finish_activity”); sendBroadcast(intent); 出于某种原因,将java活动转换为kotlin不会提供有效的输出,如果有人可以给我正确的语法来正确使用kotlin,我会感激 kotlin输出(第一个活动) [确定] : val broadcast_reciever = object : BroadcastReceiver() […]
我有一个主要在Kotlin编写的项目,但有一些Java类。 现在项目进展顺利,我想增加在不同的环境之间切换的可能性,为此我使用了风味: productFlavors { prod { dimension “default” buildConfigField ‘boolean’, ‘FABRIC’, ‘true’ applicationId = “com.myapp” } beta { dimension “default” buildConfigField ‘boolean’, ‘FABRIC’, ‘true’ applicationId = “com.myapp.beta” } dev { dimension “default” buildConfigField ‘boolean’, ‘FABRIC’, ‘false’ applicationId = “com.myapp.dev” } } 然而,当我运行的味道是不生产(这不会改变applicationId),我得到一个Java类的ClassDefNotFoundException: Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.myapp.beta.ui.view.ScrollBehavior” on path: DexPathList[[zip file “/data/app/com.myapp.beta-1/base.apk”],nativeLibraryDirectories=[/data/app/com.myapp.beta-1/lib/arm64, /system/lib64, […]
我真的很喜欢在Kotlin中编写android应用程序 – 但我真的很想念lint。 任何人都知道如何取回(至少部分)。 有没有一个项目,适应android java lint规则kotlin? AFAIK lint没有在字节码上运行,所以需要手动转换才能完成。 我目前的主要痛点是,当我使用一个函数<MINSDK级别时,我需要编译时错误有人能指出我正确的方向吗?
如何在Kotlin中使用RxJava和Retrofit为API调用创建generics类?
解释:这个问题更多的是关于Kotlin的设计意图。 许多expression式语言都支持Ternary operator , if expression [例如, Ruby,Groovy 。] 首先,我知道Groovy支持Ternary operator和Elvis operator : Groovy中的三元运算符 。 所以我不认为这是一个语法问题。 然后官方文件说: 在Kotlin中,如果是一个expression式,即它返回一个值。 所以没有三元运算符(condition?then:else),因为普通的如果在这个角色中工作的很好。 这并不能说服我。 因为Kotlin支持普通的Elvis operator在那个角色中工作得很好。 我认为ternary operator有时比普通的好,但是我想知道为什么Kotlin不支持ternary operator ?
之前在Android Studio中工作,如果在函数之前,我把/ **和回车,然后我自动生成的下一个文档,注释描述参数,返回值等 /** * @params a * @return */ int f(int a) { return a; } 当我开始在Android Studio中使用Kotlin时,我试图生成一个类似的模板,它生成没有返回,参数等的空白模板。 /** * */ fun f(a: Int) { return a } 我安装了Dokka并试图在Android Stuio中设置它,但是没有奏效。 如何在Android Studio中为Kotlin配置类似的模板生成?
我正在尝试使用新的相机硬件API(android.hardware.camera2)为我的android应用程序的示例代码。 首先,我通过Android Studio的Kotlin插件的自动转换function将Java代码转换为Kotlin代码。 下面是一段转换后的代码: private val mCaptureCallback = object : CameraCaptureSession.CaptureCallback() { private fun process(result: CaptureResult) { when (mState) { STATE_PREVIEW -> { }// We have nothing to do when the camera preview is working normally. STATE_WAITING_LOCK -> { val afState = result.get(CaptureResult.CONTROL_AF_STATE) if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState || CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState) { // CONTROL_AE_STATE can […]
我正在使用这个库来生成渐变: https : //github.com/revely-inc/co.revely.gradient 用于设置渐变animation的kotlin代码如下所示: val color1 = Color.parseColor(“#00c6ff”) val color2 = Color.parseColor(“#ff72ff”) val valueAnimator = ValueAnimator.ofFloat(0f, 360f) valueAnimator.duration = 15000 valueAnimator.repeatCount = ValueAnimator.INFINITE valueAnimator.interpolator = LinearInterpolator() RevelyGradient.sweep() .colors(intArrayOf(color1, color2, color1)) .animate(valueAnimator, { _valueAnimator, _gradientDrawable -> _gradientDrawable.angle = _valueAnimator.animatedValue as Float }) .onBackgroundOf(container) valueAnimator.start() 我到目前为止所获得的java代码: ValueAnimator valueAnimator = new ValueAnimator(); valueAnimator.ofFloat(0f, 360f); valueAnimator.setDuration(15000); valueAnimator.setRepeatCount(ValueAnimator.INFINITE); valueAnimator.setInterpolator(new […]