Tag: kotlin

在kotlin的Math类中添加一个扩展函数

我在Kotlin的Math类中增加了一个函数,但是我不能使用它,我之前用MutableList做了这个, MutableList它的工作,但是我不能用Math类来完成。 fun Math.divideWithSubtract(num1: Int, num2: Int) = Math.exp(Math.log(num1.toDouble())) – Math.exp(Math.log(num2.toDouble()))

使用gradle-script-kotlin的ant任务

我如何从我的build.gradle.kts脚本访问ant任务? 特别是,我对ant.patch任务感兴趣。 我可以像这样扩展它吗? task(“patchSources”, Patch::class) { 我可以从其他任务调用它,像这样吗? task(“patchSources”) { doLast { ant.patch(…) } } 我知道如何在Groovy中做到这一点: 如何在Gradle中应用补丁文件?

异步获取Android Kotlin中的URL

所以我试图编写一个非常简单的Android应用程序,当按钮被按下时从URL获取响应。 kotlin Android扩展已经被广告作为Java中必要的样板的替代品,所以我试了我的手。 这是我到目前为止所尝试的: package com.example.susemihl.myapplication import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.widget.TextView import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.experimental.CommonPool import kotlinx.coroutines.experimental.async import kotlinx.coroutines.experimental.runBlocking import java.net.URL suspend fun fetch_url(url: String): String { return URL(url).readText() } fun fetch_async(url: String, view: TextView) = runBlocking { val result = async(CommonPool) { fetch_url(url) } view.setText(result.await()) } class MainActivity : AppCompatActivity() { override fun […]

可循环观察的代表

在某些情况下是否有可能规避可观察的代表? 用例: val ls: ArrayList by Delegates.observable(arrayListOf()) { _, _, new -> if (someCondition) { usesList(new) // I want to reset ls to arrayListOf(), but without the invocation of the observable delegate. } }

Kotlin类NoClassDefFoundError崩溃

我有一个现有的Android项目,使用以下库: AutoValue Dagger2 RxJava Retrolambda 我正在尝试添加Kotlin支持,以便我可以将项目慢慢迁移到Kotlin。 这是我所做的。 增加了Kotlin依赖。 将其中一个类转换为Kt类并移至src/main/kotlin/..package.. 源集中添加了kotlin。 sourceSets {main.java.srcDirs + =’src / main / kotlin’} 当我做一个干净的生成和部署应用程序,我得到NoClassDefFoundErrorexception。 但是,如果我再次部署它工作得很好。 有什么建议么? 我在课堂上没有任何注释,所以我没有申请kapt插件。 注意:我正在使用最新的kotlin 1.0.4。 我也有即时运行禁用。

消息没有收到蓝牙聊天。 我的处理程序是否坏了

我正在开发Android开发项目。 蓝牙的网站,它似乎是正确的发送消息,但没有收到他们。 过去,我试图创建另一个蓝牙应用程序,当连接到设备时,系统提示我确认连接,并显示PIN码。 在当前的应用程序工作时,我从来没有得到提示。 但是,它并没有出现任何exception情况,并且消息似乎正在发送。 这是我的Thread类用于管理连接: inner class ConnectedThread(val socket:BluetoothSocket, val socketType:String) : Thread(){ val inStream = socket.inputStream val outStream = socket.outputStream init { mState = STATE_CONNECTED } override fun run() { Log.i(TAG, “BEGIN mConnectedThread”) val buffer = ByteArray(1024) var bytes:Int while (mState == STATE_CONNECTED){ try { bytes = inStream.read(buffer) mHandler.obtainMessage(Constants.MESSAGE_READ, bytes, -1, buffer) .sendToTarget() […]

将FlexBox子元素添加到FlexBox后,如何更改其宽度

我们有一个按钮和一个视图(将按钮与其他视图分开的一行)的线性布局。 我们将linearLayout以编程方式添加到flexBox元素,并将Flex上的FlexGrow设置为1f。 问题是,我不能让内部按钮匹配父线性布局的宽度,同时设置最小宽度。 当我将按钮的宽度(xml)设置为match_parent时,父元素的大小只有按钮中的文本的大小(在文本更改的情况下,它的大小要大20%左右)。 在这个例子中,setMinnimumWidth()似乎没有任何影响。 但是,当我将按钮宽度(在xml中)设置为WrapContent然后setMinimumWidth()确实工作。 该按钮显示为正确的大小,但父元素比按钮大得多(大概是为了填充flexBox行中的剩余空间。 我怎样才能让按钮和它的父母是同样的大小,同时也能够设置最小宽度? xml为我们添加的flexbox元素, 添加元素并设置宽度的代码 val button = linearLayout.findViewById(R.id.button_id) as Button button.width = width button.minimumWidth = width flexBox.addView(linearLayout) val layoutParams = linearLayout.layoutParams layoutParams.width = width linearLayout.layoutParams = layoutParams linearLayout.invalidate() linearLayout.requestLayout() 代码在kotlin。

SyncAdapter中的Singleton Room数据库触发LiveData

我努力在我的SyncAdapter使用Room作为单例。 我使用Kotlin。 我的房间课 @Database(entities = [(Product::class)], version = 1, exportSchema = false) abstract class AppDatabase : RoomDatabase() { abstract fun productDao(): ProductDao companion object { @Volatile private var INSTANCE: AppDatabase? = null fun getInstance(context: Context) : AppDatabase = INSTANCE ?: synchronized(this) { INSTANCE ?: buildDatabase(context.applicationContext) .also {INSTANCE = it} } private fun buildDatabase(context: Context) = […]

Kotlin中twitter4j.StreamListner IllegalAccessError的原因是什么?

在Kotlin中实现twitter4j.StatusListner时,出现以下IllegalAccessError和相关的堆栈跟踪: Exception in thread “main” java.lang.IllegalAccessError: tried to access class twitter4j.StreamListener from class rxkotlin.rxextensions.TwitterExampleKt$observe$1 at rxkotlin.rxextensions.TwitterExampleKt$observe$1.subscribe(TwitterExample.kt:50) at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:40) at io.reactivex.Observable.subscribe(Observable.java:10700) at io.reactivex.Observable.subscribe(Observable.java:10686) at io.reactivex.Observable.subscribe(Observable.java:10615) at rxkotlin.rxextensions.TwitterExampleKt.main(TwitterExample.kt:8) 由以下代码产生: val twitterStream = TwitterStreamFactory().instance // See https://stackoverflow.com/questions/37672023/how-to-create-an-instance-of-anonymous-interface-in-kotlin/37672334 twitterStream.addListener(object : StatusListener { override fun onStatus(status: Status?) { if (emitter.isDisposed) { twitterStream.shutdown() } else { emitter.onNext(status) } } override fun […]

一个简单的kotlin类与mockito测试引起MissingMethodInvocationException

我开始学习Kotlin和Mockito,所以我编写了一个简单的模块来测试它。 AccountData_K.kt: open class AccountData_K { var isLogin: Boolean = false var userName: String? = null fun changeLogin() : Boolean { return !isLogin } } AccountDataMockTest_K.kt: class AccountDataMockTest_K { @Mock val accountData = AccountData_K() @Before fun setupAccountData() { MockitoAnnotations.initMocks(this) } @Test fun testNotNull() { assertNotNull(accountData) } @Test fun testIsLogin() { val result = accountData.changeLogin() assertEquals(result, […]