Androidを勉強していると単純な動作をさせるにも覚えることがたくさんあるので大まかなファイル区分ごとに分けて覚えることを箇条書形式で書いていきたいと思います。この記事で書いていくのはActivityファイルについて書いていきます。勉強中なので随時更新していきます。
findViewById() : 引数にRクラスのIdをとり BottunクラスやTextView変数に代入して使う。
代入できる種類 : Button(ボタン), TextView(テキスト), ImageView(画像), (etc...)
setOnClickListener() : Bottunt等をクイックハンドラに接続する。
Toast(トースト) : 画面を短時間ポップアップするメッセージ。文字列しか表示できない。
Toast.makeText(): Toastを作成するメソッド引数に以下のものをとる。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val resultText: TextView = findViewById(R.id.result_text) val rollButton: Button = findViewById(R.id.roll_button) fun rollDice(){ // Toast.makeText(this, "button clicked", Toast.LENGTH_SHORT).show() val randomInt = (1..6).random() resultText.text = randomInt.toString() } rollButton.setOnClickListener {rollDice()} } 勉強してるときに書いたプログラムの例(参考[1])
setImageResource() : 画像をセットする
val resultText: ImageView = findViewById(R.id.dice_image) val drawableResource = R.drawable.画像ファイル dice_image.setImageResource(drawableResource) 勉強してるときに書いたプログラムの例(参考[1])
初期値の設定 : lateinit を先頭に付けることで一つのActivityで使いまわしそうな変数を初期値nullかつ一度の変数代入後はnullの割り当てが削除されnullチェック不要な変数を宣言できる。
変数.setText() : 変数にテキストを代入する
変数.getText() : 変数のテキストを読み取る
(StringのID).text = "文字列"
例)
var txt: TextView = findViewById(R.id.txtResult) //txtResultは文字列のID txt.setText(Date().toString())
txtResult.setText(Date().toString()) //txtResultは文字列のID
txtResult.text=Date().toString() //txtResultは文字列のID
イベントリスナー : ユーザーの特定の動作に応じた関数を作るための仕組み。仕組みとしては画面上でイベントが発生するとView(ウィジェット)にイベントリスナーが登録されていないか調べ実行する。JavaよりKotlinはかなり省略してイベントリスナーを書ける(参考・引用[2]がかなりわかりやすい)。リスナーとハンドラの差は参考・引用[3]で学べた。
例)
btnCurrent.setOnClickListener{ //btnCurrentはボタン(View)のID
txtResult.text=Date().toString() //txtResultは文字列のID
}
val showTimeBtn : Button = findViewById(R.id.btnCurrent) showTimeBtn.setOnClickListener{ txtResult.text=Date().toString() }
画面に変更があったとき情報を保つ方法
onSaveInstanceState : 画面に変更があったときに状態を保存する方法
onRestoreInstanceState : 画面が再生成されるときに情報を引次ぐ
これらのメソッドには引数としてBundleオブジェクトが渡される。
Bundle : アプリの状態をキーと値の組み合わせで管理するオブジェクト
Bundleオブジェクトに値をセットするにはput型名(最初の文字は大文字)を使う。取り出すときはget型名(最初の文字は大文字)を使う。以下に例を書く。
bundleObject.putString(キー, 値)
bundleObject.getString(キー)
[1] :Android Kotlin Fundamentals 01.2: Basic app anatomy
[2] :Kotlinでリスナーやコールバックをスッキリと書く【関数リテラルとSAM変換】 - Qiita
[3] :今後は「イベントリスナー」は書かずに「イベントハンドラー」を書け!?
[4] :Android:引数はthisか?getApplicationContextか?ActivityとApplicationの違い