AndroidStudioを学習しだして3日ほど経過した、エンジニアとしても初心者な、まだ仕事に出来ていないものです。自分の為にもJAVAの文脈で理解した考え方をまとめます。
まずAndroidSDKを2つの概念で把握しよう
そもそもAndroidSDKは(私の解釈もくっそ甘いのですが)JAVA標準ライブラリのAndroid版です。AndroidApp開発を楽にするライブラリです。JAVAという言語とAndroidOSの仕様を紐づけするものです。
ViewクラスとContextクラス
に分かれます。
Viewクラスは画面の要素とそれに対するアクションを定義しています。
ざっくり例示するならボタンとそれに対するクリックです。
画面全体もViewクラスで定義しているはずです。
詳しくは調べてません爆発してしまいます。
ContextクラスはAndroidOSとして出来る事を定義しています。もう少し言えばAndroidOSにAndroidOSでしか出来ない事を依頼をする役割です。
Toastだったり撮影だったりファイル生成だったり画面遷移だったり。
アプリの外側で起きる事を定義しています。
大きな流れについて
ボタンを押したら現在時刻がアプリ上に出るアプリを想定しましょう。
1. まずXMLファイル上でボタンと現在時刻のテキストを定義します。
2. 次はJAVAファイル上でXMLファイルを認識できるようにView型インスタンスとして各要素を生成します。
3. いわゆるリスナクラスを定義します。
私は勘違いしていましたが、このリスナクラスの実装というのはクリックされた時の処理を定義するものです。イベントハンドラに当たります。onClickなどはView型にて定義されています。
4. Viewクラスにてクリックを認識するので、onClickメソッドの呼び出しで実行を行います。(ただしこの際、Viewクラス定義のsetterメソッドのsetOnClickListenerで対象要素と紐づいたViewインスタンスを事前に渡しておくこと)
これが大きな流れになります。
ただしこれをAndroidOSの機能として、例えばToastで表示をすることになるならば、
3.で定義したリスナクラスにContext型インスタンスを渡す必要があります。
Toastができるような、AndroidOSとしての機能を行使できるメソッドはView型には定義されていないという事ですね。
以下感想
半日ほどかけてChatGPTに協力いただいたり、実際のテキストを調べて回ったりして、ここまで形にはできました。
正直一番わかりづらかったのがsetOnClickListenerだったのですが、ただのsetterだと気付いてから少し楽になった。まだオブジェクト指向に対する理解が足りていないなというか実践が足りていないなあと思った。
以上。