Questions tagged «kotlin»

Kotlin是JetBrains支持的一种开源静态类型编程语言。Kotlin结合了OOP和功能特性,并专注于互操作性,安全性,清晰度和工具支持。它目前针对JVM和JavaScript,并且是Android上官方支持的语言。

2
Moshi 1.9.1无法序列化Kotlin类型
我有使用Moshi 1.8.0进行数据序列化/反序列化的工作代码 现在,升级到1.9.1会导致尝试序列化时崩溃: java.lang.IllegalArgumentException:无法序列化Kotlin类型com.xxx.Spot。不使用kotlin-reflect的Kotlin类的反射序列化具有未定义和意外的行为。请使用来自moshi-kotlin工件的KotlinJsonAdapter或使用来自moshi-kotlin-codegen工件的代码gen。 这是序列化器代码: val moshi = Moshi.Builder().build() val dataListType = newParameterizedType(List::class.java, T::class.java) val adapter: JsonAdapter<List<T>> = moshi.adapter(dataListType) val json = adapter.toJson(dataList) 相应的T类是 @IgnoreExtraProperties data class Spot( var id: String = "", var localizedName: String? = null, var type: String = "", var location: Location? = null ) 我完全不知道在这里做什么。 …
12 android  kotlin  moshi 

8
找不到androidsdk.modules
因此,在运行程序的过程中,build.gradle因此错误而失败。我的意思是,它实际上是在第二秒之前工作的,而不是第二秒之后。我没有做出任何改变。 Could not find androidsdk.modules:shield:unspecified. Required by: project :app > com.facebook.android:facebook-login:5.15.2 project :app > com.facebook.android:facebook-core:5.15.2 project :app > com.facebook.android:facebook-common:5.15.2 Search in build.gradle files 这是我的礼物。 apply plugin: 'com.android.application' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-android' android { compileSdkVersion 28 buildToolsVersion "29.0.2" defaultConfig { multiDexEnabled true applicationId "com.example.casualdatingapp" minSdkVersion 26 targetSdkVersion 28 versionCode …

3
Android RecognitionListener:onResults被调用两次
我有一个使用Kotlin编写的使用RecognitionListener的项目。语音到文本功能始终是成功的,从未出现任何问题。 从上周开始,它的onResult函数开始被调用两次。该项目未做任何更改。我测试了该项目的旧版本(从几个月前开始),这些版本都存在相同的问题。 有三种不同的情况: 小文本(1到8个单词)和SpeechRecognizer自动停止-> onResult()调用了两次; 大文本(9个单词或更多)和SpeechRecognizer自动停止->正常行为(onResult()调用一次); 手动调用任何文本大小和SpeechRecognizer stopListening()函数(从代码)->正常行为。 这是VoiceRecognition语音转文字类代码: class VoiceRecognition(private val activity: Activity, language: String = "pt_BR") : RecognitionListener { private val AudioLogTag = "AudioInput" var voiceRecognitionIntentHandler: VoiceRecognitionIntentHandler? = null var voiceRecognitionOnResultListener: VoiceRecognitionOnResultListener? = null //Must have this var voiceRecognitionLayoutChanger: VoiceRecognitionLayoutChanger? = null var isListening = false private val …

2
Kotlin Flow与LiveData
在上一个Google I / O中,Jose Alcerreca和Yigit Boyar 告诉我们,我们不再应该使用LiveData来获取数据。现在,我们应该将暂停功能用于一次抓取,并使用Kotlin的Flow创建数据流。我同意协程对于单次获取或其他CRUD操作(例如插入等)非常有用。但是,在需要数据流的情况下,我不了解Flow给我带来什么好处。在我看来,LiveData也在这样做。 流示例: 视图模型 val items = repository.fetchItems().asLiveData() 资料库 fun fetchItems() = itemDao.getItems() 道 @Query("SELECT * FROM item") fun getItems(): Flow<List<Item>> LiveData示例: 视图模型 val items = repository.fetchItems() 资料库 fun fetchItems() = itemDao.getItems() 道 @Query("SELECT * FROM item") fun getItems(): LiveData<List<Item>> 我还希望看到一些使用协程和Flow与Room或Retrofit协同工作的项目示例。我只找到了一个Google的ToDo示例,其中协程用于一次获取,然后在更改时手动重新获取数据。

2
Kotlin协程“事前发生”的保证?
Kotlin协程是否提供任何“事前保证”? 例如,mutableVar在这种情况下,对(可能)其他线程的写入和后续读取之间是否存在“先于后继”保证: suspend fun doSomething() { var mutableVar = 0 withContext(Dispatchers.IO) { mutableVar = 1 } System.out.println("value: $mutableVar") } 编辑: 也许还有其他例子可以更好地阐明这个问题,因为它更具Kotlin风格(可变性除外)。这段代码是线程安全的吗: suspend fun doSomething() { var data = withContext(Dispatchers.IO) { Data(1) } System.out.println("value: ${data.data}") } private data class Data(var data: Int)

1
如何覆盖Kotlin生成的不必要的空检查?
考虑以下最小的Kotlin示例: fun <U> someWrapper(supplier: () -> U): () -> (U) { return { supplier() } } fun foo(taskExecutor: TaskExecutor): Int { val future = CompletableFuture.supplyAsync(someWrapper { 42 }, taskExecutor::execute) return future.join() } @Test public void shouldFoo() { assertThat(foo(), is(42)); } 我在Jacoco中有分支覆盖规则,该规则对于上面的代码失败,说someWrapper呼叫行未覆盖2个分支中的1个。不幸的是,对于我来说,排除所有someWrapper被调用的类不是一个选择。 查看反编译的Java代码: public final int foo(TaskExecutor taskExecutor) { Object var10000 …

1
Gradle同步失败:不支持的方法:KotlinPlatformContainer.supports()
我刚刚将Android Studio更新到最新版本3.5.1,并且知道出现以下错误: Gradle同步失败:不支持的方法:KotlinPlatformContainer.supports()。您连接到的Gradle版本不支持该方法。要解决该问题,您可以更改/升级您连接到的Gradle的目标版本。或者,您可以忽略此异常并从模型中读取其他信息。 我在两个模块中使用Kotlin Multiplatform,但我不知道它是否相关。

1
将Kotlin内联类作为实体字段的会议室数据库
我试图让Room(https://developer.android.com/topic/libraries/architecture/room)与Kotlin的内联类一起工作,如Jake Whartons文章内联类使数据库ID大: @Entity data class MyEntity( @PrimaryKey val id: ID, val title: String ) inline class ID(val value: String) 编译此房间时抱怨 实体和Pojos必须具有可用的公共构造函数。您可以有一个空的构造函数或一个其参数与字段匹配的构造函数(按名称和类型)。 查看生成的Java代码,我发现: private MyEntity(String id, String title) { this.id = id; this.title = title; } // $FF: synthetic method public MyEntity(String id, String title, DefaultConstructorMarker $constructor_marker) { this(id, title); } …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.