
エラーだらけでさっぱり分からん…
こうした悩みが少しでも減るよう知っておきたいことをまとめます。
私はC言語使ってる組み込みエンジニアなので、Kotlinで初めてオブジェクト指向プログラミングを行っています。
C言語基準で考えてしまう癖があるので、おかしい所とかあればご指摘いただけると幸いです。
UI要素について
IDを定義することでUI要素は一意に決定され、IDを基に変数に格納する
UI要素はレイアウトファイルで配置するボタンやテキストビュー、スピナーなどですね。
これらUI要素はIDを振ることで一意にそれを定義することができます。
こうして定義したIDはfindViewByIdメソッドを使用して取得することができ、変数に格納することができます。
値や文字列と同じようにUI要素も変数として取り扱うことができます。
大事なのでもう一度言いますが、UI要素は変数に格納することができるのです。
そしてUI要素を格納した変数に対して、ボタンならsetOnClickListnerメソッド、テキストならtextメソッドなどの処理を行います。
スコープ範囲(存在範囲)
ここで、UI要素はOnCreate関数内でのみアクセスすることができる点に注意が必要です。
OnCreate関数以外でfindViewByIdメソッドは使えないです。

え、じゃあ外からUI要素をいじりたいときはどうすればいいの?
ってなりますよね。少なくとも私はこれでだいぶ苦労しました。
UI要素を格納した変数をどこからでも参照できるようにするには
Bluetoothやタイマといった別スレッド(スレッドは後述します)からメインアクティビティのUIを変更したい、フラグメントで別のUI要素にアクセスしたいときがあります。
私のやり方が正解か分からないですけど、UI要素を格納する変数をメインアクティビティの上部にlateinitのグローバル変数として宣言させました。
OnCreate関数ではグローバル変数にUI要素を格納させてやることで、どこからでもアクセスできる変数にさせることができました。
スレッドについて
記事執筆中
フラグメントについて
記事執筆中
タイマについて
タイマに関しては別記事にあげましたので、こちら参照ください。
タイマは一言で言うなら、使い捨てのスレッドなんですよ。