WebViewのフォーム入力でImmersiveモードを維持する(Kotlin編)

Androidアプリ開発でKotlinに移行してから以前出会した問題が再度形を変えて現れてきたので紹介したいと思います。

と言ってもそんな大袈裟なものでなく、正確には Unresolved Reference エラーの解消ということになるのですが、単に文法をよく知らなかったのとAndroid Studioの変換と予測機能が追いついてこなかっただけで、MainActivityクラスの中にWebViewJavaScriptInterfaceのようなクラスを書いてスコープ外にあるものを呼び出したい時はinnerを付けましょうというお粗末な話でした。

In Kotlin, why can’t I access the outer class on an instance of an inner class? – Stack Overflow

理想的なのは、OS側でソフトウェアキーボードを表示する時にフルスクリーンを解除しないようにするか、入力が終了してキーボードが引っ込んだら判定できるようであればわざわざブリッジする必要がないのですが、どちらも古から見込みがないので仕方ありません。

How do I detect if software keyboard is visible on Android Device or not? – Stack Overflow

恥ずかしながらKotlinになってもう遅延処理は不要なんじゃないのかなあと思ったのも事実だったのですが、

未だおぐぐり検索結果の一等地に自分の過去投稿が出てきて解決に進まない時のもどかしさというのも経験しました笑

投稿者: hkitago

個人事業主でウェブと iOS, Android アプリの開発者で一児の父親。JavaScript, ActionScript, AppleScript, PHP, SQL, ObjC, Swift, Java の読書実行試験運用管理を生業とし、Bind, Postfix, Apache を MacOS で使い、エディタは Vi, mi, Kod, Smultron, TextWrangler を経て Coda, Xcode, Android Studio, Atom といった IDE と CotEditor を重用しています。座右の銘は「アウトプットは量多い方がいい。フィルタは各自がやればいい。」です。