Kotlin
執筆日時 2020/12/31 新しいWindowInsetsController ActivityのonResumeで以下の処理を行います。 window.insetsController?.hide( WindowInsets.Type.statusBars() .or(WindowInsets.Type.navigationBars()) ) window.insetsController?.systemBarsBehavior…
基本的にMutableStateFlow使っておけば良いと思いますが、LiveDataのように変更が無くても常に値を流したいという要件がありました。 以下のようなFlowが欲しい 最新の値を取得できる これは StateFlow の特徴ですね。 public interface StateFlow<out T> : SharedF</out>…
環境 Kotlin Coroutine 1.4.2 問題 このような関数があります。実装は StateFlowImpl ですが、わざわざ MutableStateFlow という関数を作ってそこから作成させるようになっています。 @Suppress("FunctionName") public fun <T> MutableStateFlow(value: T): Mu</t>…
Java Agentとは java コマンドを実行するとhelpが出力されるわけですが、そこにJava Agentについて書いてあります。 -javaagent:<jarpath>[=<options>] Javaプログラミング言語エージェントをロードする。java.lang.instrumentを参照 Instrumentとは 既存のアプリケーションを</options></jarpath>…
以下をざっと紹介しいきます。 https://kotlinlang.org/docs/reference/whatsnew14.html SAM変換 Androidで言うと setOnClickListener がよく使っていると思います。 public interface OnClickListener { void onClick(View var1); } JavaのInterfaceで関数…
1.4-M1 で試そうとしたのですが、おそらく、kotlinx.serialization のコード生成部分がうまく動かなかったので 1.3.71 で行いました。 gradleのバージョンは 5.6.1 。 Slackのコマンドのリクエストをパースしてみました。 コード build.gradle.kts plugins {…
Kotlin/JS は Kotlin/JS としてセットアップするか、 Kotlin MultiPlatform Project(Kotlin MPP) としてセットアップするかの二種類があります。 ここでは全体としての Kotlin/JS と、Kotlin/MPP と対になっている Kotlin/JS の表記が混じっています。 基本…
Java/Kotlinにて、テストとかで使うのではなく、ちょっとした確認でMockを使用したかっただけでした。それくらいでMockライブラリを入れるのが面倒だったので、ライブラリ無しでMockできないかを検討してみました。 1. Mockライブラリを調べる Mockライブラ…
要件 これは このように改行させたくないけれど、 これは改行させたいという要件がありました。 Wrap if long Method call arguments Wrap if long が Wrap if long だと以下のようになります。 @JsonProperty( の次から改行されてしまっています。 だからと…
KotlinのDelegation、便利ですよね。プロパティの名前を取得できるという点が便利で、Annotation Processorの代わりに使われたりもします(代替の技術ではないけど)。 紹介する機能 今回はDelegationの Providing a delegate という機能を知ったため、これ…
暫定。初めてSwiftを書いてみて、ここ必要だなという部分をメモ。 Std Out Swift print("") Kotlin println("") Declaring variables Swift let number = 42 var message: String = "Hello" // let -> NG number = 0 // var -> OK message = "" Kotlin val n…
MapのKeyって文字列とか数値とかしか使ってなかったけど他のdata classとか使いたいなとなったので調べた。 確かめる 何も考えずdata classを使う ちゃんと直感的に動く data class MapKey(val key1: Int, val key2: Int) fun main(args : Array<String>) { // {MapK</string>…
gradleでビルドする時に以下のように書けというのが多いですが動かなかったので調べました。 既存コード jar { manifest { attributes 'Main-Class': 'net.matsuda.MainKt' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) …
Kotlin Contractsあまり理解していなかったのと、自分で書く必要があるとは思わなかったのでこんな所で使うんだなと思って書きました。 まずこのようなコードがあります。 時間を計測するKotlinのスタンダードライブラリの関数です。 public inline fun meas…
バージョン Kotlin 1.3.0 以下のコードでblock()はダメだけどblock.invoke()はスマートキャストされる。 class Hoge(val block: (() -> Unit)?) { fun hoge() { if (block != null) { block() // NG block.invoke() // OK } } } とりあえず探してみたらあっ…
Android data bindingで定義済みの属性リスト - Qiita 「android:onMenuItemClick」とか定義されてるはずなのに使えんなと思ってまさかと思い確認。 原因 extensions/baseAdapters/src/main/java/android/databinding/adapters/ToolbarBindingAdapter.java -…
エラー文 Error:java.lang.IllegalStateException: failed to analyze: android.databinding.tool.util.LoggedErrorException: Found data binding errors. ****/ data binding error ****msg:The expression [...] cannot be inverted: Two-way binding can…
よく忘れるのでまとめた。 スコープ拡張関数 関数名 it 戻り値 定義 also ○ 自身 fun T.also(block: (T) -> Unit): T { block(this); return this } apply ✕ 自身 fun T.apply(f: T.() -> Unit): T { f(); return this } let ○ 最後 fun T.let(f: (T) -> R):…