備忘録:8.2 OptionMenu

ここまで、特に大きなエラーもなく進んでましたがいったんまとめてみます。

エラー多数発生

削除指定のエリアが間違っている。
わざとか?(*´Д`)
いろんなモンが違っていたので整理。
メニューの設定という簡単そうでいて、かなり苦戦を強いられました。
アドバイスしていただいた方にも感謝です。
あと、androidstudioのバージョン違いもきっとあるのよね


図は43行目

※デバッグ

行番号のあたりをクリックすると赤くするとそこがブレークポイントになる。
>『Shift』+『F9』でAVDで動作確認
>ブレークポイントに来ると止まる。
>AndroidStduio本体の方で『F8』で1行ずつ動作再生ができる

※レイアウトには必ずIDを

コンテンツテキスト配置系『content_main.xml』は
『root_layout』をふること
ベースになる『activity_main.xml』は不要

※バージョンの違いによる記述違い

書籍のAndroidStduioのバージョンは古いので
リレイティブレイアウトがデフォルトになってるけど、
AndroidStduio2.X以降は
コンストレイントがデフォルトになってるので
そこを自分で書き換える必要がある

『RelativeLayout』を『ConstraintLayout』にかえて

final RelativeLayout layout =
(RelativeLayout)findViewById(R.id.root_layout);

final ConstraintLayout layout =
(ConstraintLayout)findViewById(R.id.root_layout);

こちらは、上部の方に追加する
import android.support.constraint.ConstraintLayout;

【別の方法】

MainActivityの方は、記述を『RelativeLayout』でいかし、
『Content_main.xml』を変更する方法。

パレット>レガシー>RelativeLayoutを下のコンポーネントツリーにドラッグ
画面に配置されてる要素を「RelativeLayout」内に収める。
IDを忘れずに書き換える

こちらでも動作しますよ。

次は、
もやもやっとしていたのが
解りかけてきたので
記しておきます!

【イベントリスナーとは】

何らかのイベントが発生した場合に呼ばれるメソッドを持つクラス。
「キーが入力された」「マウスがクリックされた」といった「イベント」が発生する場合、そのイベントに対応する処理をするためのメソッドを用意する必要がある。 そのメソッドを持つクラスが「イベントリスナー」

だから、すべて誰かが配置したプログラムを
いったん呼び出してオーバーライドして
定義しなおして
リプログラムするんね

イベントリスナーは基本的に抽象クラスである
抽象クラスとはメソッド自体は宣言されているが
処理自体は記述されていないので
必ず自前で記述する必要がある
言い換えれば拡張性があるということ

アクティビティにボタンを置いただけだと
アクティビティ自体は問題なく稼動するし、
その上に配置されたボタンも稼動している(反応しないけど)
押したときのモーション自体は動いてる
昔のウィンドウズみたいにボタンがへこむみたいな

で、その両者の橋渡しをするのがイベントリスナー
イベントリスナーを実装することでアクティビティが
ボタンクリックを受け付けるようになる
だから「リスナー」なのかな

具体的には本のP333とP335 7行目(本の右側のインデックスを行として扱う)

findViewById(R.id.button)
.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//ボタン押下時の処理
}
}
);

findViewByIdでボタンのIDからボタンの情報を取得し
setOnClickListenerでアクティビティ・ボタン間で
橋渡しができるようにする
で、何を橋渡しするのかというとボタンのOnClickListener

OnClickLister(イベントリスナー)は抽象クラスなので呼び出しと
同時に処理部(実体)を記述している(@Override以下)

ちなみにイベントリスナーはclassではなくて
interfaceとして宣言されている

【オブジェクト指向】

オブジェクト指向 とは
https://www.sejuku.net/blog/5973

オブジェクト指向では、
共有する性質を持つ仲間を抽出して分類する特徴があります。
その分類をクラスと呼びます。

クラスには三つの要素をもつオブジェクトをまとめて定義してます。
名前(クラスそのものの名前)、データ(属性)、ふるまい(動作)があります。

オレのイメージとしては部課かなー
まず企業というクラスがあって
それを継承した以下のサブクラスを作る

お金担当の経理部
開発担当の開発部
販売担当の営業部

開発部「新規開発したいからお金ちょうだい」
経理部「じゃ100円だしたげる」
開発部「・・・」

開発部はお金に手出しできないので
経理部(他のクラス)に依頼するわけ

逆に経理部は開発部に口出しできない

経理部「可愛い女の子キャラのほうが売れるよ」
開発部「うるさい、お前が言うな」
経理部「・・・」

営業部「商品売れたから入金処理してよ」
経理部「ちっ!50円かよ」
営業部「・・・」

それぞれが担当部署以外には口出しできないけど、
「○○企業です」と自己紹介ができる
これが継承かな

【String.format】あれこれ

【5分で理解】JavaのString.formatの使い方まとめ
https://www.sejuku.net/blog/14466

『%f』は浮動小数点
『%d』は整数値

みんなエライなぁ
わかりやすい。
これこそインターネットよな。

スポンサーリンク
PR1