『Welcome to Android Basics in Kotlin』をやった(3)

ナビゲーション

画面間を移動する

2. コレクションの詳細

セットの詳細

All of the code above:ってコードじゃなくて"以上のコード全体を次に示します。"みたいな感じの通常文なんじゃないかな?

4. ラムダ式と高階関数の詳細

高階関数

に使用しますしかし 句点抜け。


アクティビティとインテント

5. 明示的インテントを設定する

デスティネーション アクティビティの
わかりにくいな…なんて言えばいいのかな?
呼び出し先アクティビティ? 起動する宛先アクティビティ?

後で取得される名前が指定された
これも若干わかりにくいな
宛先アクティビティで取得する際に使用される名前が指定された…だと冗長か
後で取得される名前(この例ではletter)が指定された
数値や文字列などのデータ(この例ではholder.button.text.toString())も長いか…
intent.putExtra(識別名,データ)とかにするか…

6. DetailActivity を設定する

詳細アクティビティ
DetailActivityを訳しちゃってる感じ?

コンパニオンオブジェクトってなんか不思議な存在のような…
クラス変数(定数?)とどう違うのか…
コンパニオンオブジェクトを何処に含めるべきかとか考えちゃうと昔ながらの定数記述用のクラスを用意にしちゃったりしても大差ないような気もするけど、importの有無が出てくるのかな?

companion object vs. top-level

うーん、まあ今の俺氏のレベルでは深く気にすることはないようだな(ノ∀`)
つーか多分この先も俺氏のレベルだとそんなに気にすることはなさそうw


9. メニューボタンを実装する

線形レイアウト マネージャー
リニアレイアウトマネージャーの方がまだわかりやすいかな。

否定します
切り替えますとかでええんでないのかな?

注: onCreate() メソッドをオーバーライドする場合、アクティビティの作成を完了するにはスーパークラスの実装を呼び出す必要があります。そのため、このメソッド内ですぐに super.onCreate() を呼び出します。他のライフサイクル コールバック メソッドについても同じことが言えます。

へぇ、そういうことだったんかい(・∀・) 

コードではBundleはnull許容になってる?

注: アクティビティが再作成されている場合、onRestoreInstanceState() コールバックは、onStart() の後にバンドルとともに呼び出されます。ほとんどの場合、onCreate() でアクティビティの状態を復元します。ただし、onRestoreInstanceState() は onStart() の後に呼び出されるため、onCreate() を呼び出した後で状態を復元する必要がある場合は、onRestoreInstanceState() を使用できます。

ふーむ。

おかしいな、画面回転後、デザートの絵は保持されるのに、デザート数と金額が0になる。
クリックすると正しい(?)累積数、累積金額になるんだけども。
描画の更新とかしないといけないのかな…
なんかやり方間違えたか?

わかったw
"binding 変数の設定の後に追加します。"ってあったから一番最後に追加しちゃったけど、
"// Set the TextViews to the right values"の前に貼らないと
バインディングされてるTextViewに値を代入しないわけだな(ノ∀`)


フラグメントとナビゲーション コンポーネント

3. フラグメントとフラグメント ライフサイクル

フラグメント ライフサイクル

"fragments can be initialized and removed from memory"
フラグメントは初期化してメモリから削除できます。
これは違うよねw
初期化及び削除することができます。の方が妥当だよね。

"Also, just like activities, fragments have a lifecycle with several states,"
また、アクティビティと同様に、フラグメントには複数の状態を持つライフサイクルがあり
"複数の"だと同時に状態を複数持つという意味にも取れそうで微妙だな。
"数種の"がいいか…うーむ…
Alsoだからアクティビティと同様に、フラグメントにも数種の状態を持つライフサイクルがありかな?


6. DetailActivity を WordListFragment に変換する

onClickListener() の LetterAdapter LetterAdapterのonClickListener()?

LetterListFragmentのonCreateViewでval view = binding.rootreturn binding.root

なんでbuild.gradleってプロジェクト用とモジュール用に分かれてるんだろうな(´・ω・`)
つーか分かれてるなら名前を変える方が良さそうだけども…

或いはエディタ上では単一のファイルのように見せかけるとか…
説明文だとアプリレベルってあるけどIDE上だと"モジュール:Words.app"と表示されていてわかりにくいし。

つーかこの辺のgradleファイルの編集についてもIDEが良きに計らってくれないもんだろうか。

可能性のあるデスティネーション possible destinationsって上で言っている、
移動できる「デスティネーション」a possible "destination" that can be navigated to.の省略なんだろうな。 どっちもあれだな…"移動可能な"辺りかな?

layout_height 属性と layout_width 属性の下に
layout_height 属性との部分は不要ではなかろうか?


8. ナビゲーション グラフの使用

ナビゲーション グラフをセットアップする

なんか操作を間違えたのか、ナビゲーショングラフには表示されていない。
これは自分で追加していかないといけないのか?
だとすると画像が一つ飛んでるのではなかろうか…
画面左上という表現も微妙だな。デザインペイン(?)の左上とか言わないと一瞬悩むだろう…

setupActionBarWithNavController(navController)ってないな…(´・ω・`)
setupActionBarWithNavController(this,navController)の方にしてみたが…

フラグメントとナビゲーション絡みはきちんと解説ページを読まないと把握できそうにないな(ノ∀`)


ViewModel にデータを保存する

2. スターター アプリの概要

ゲームの概要

ぐぐってみたがアーキテクチャという言葉の定義がいまいちわかりにくい(´・ω・`)
何となくわかったような気がするが、なんかコンテキストによって意味が若干変わりそうな感じがして曖昧モコモコである…

4. ViewModel を追加する

viewModelsへのプロパティ移譲も若干わかりにくい…
コード上の変数名viewModelだと紛らわしいからgameViewModelとかにしといてくれたら良かったのにな。

6. ViewModel のライフサイクル

4.onCreateView() 内の GameFragment
ここも逆かな?

7. ViewModel を設定する

次の単語を取得する

currentWord.

currentWord = allWordsList.random()
val tempWord = currentWord.toCharArray()
tempWord.shuffle()

while (tempWord.toString().equals(currentWord, false)) {
    tempWord.shuffle()
}

ってコード、本当に動く(´・ω・`)?

tempWord.toString()じゃなくて、String(tempWord)とかtempWord.joinToString("")じゃないとうちでは動かない。

issuesには53と58と72で上がってるっぽいねぇ


ヘルパー メソッドを追加する

nextWord().

8. ダイアログ

アラート ダイアログの構造

⑤の説明は?

後置ラムダ構文ってちょっと勘違いしそうだな(´・ω・`)
引数関数とは思い難い。波括弧後の"."が少し受け入れがたいw

private fun getNextScrambledWord()って不要じゃないか? ← 一番最後で消してた

9. Submit ボタンの OnClickListener を実装する

スクランブルされた単語を表示する

onSubmitWord() ない

スターター コード内のコード スニペット

GameFragment,

ViewModelでLiveDataを使用する

LiveData.

4. 現在のスクランブルされた単語に LiveData を追加する

LiveData,

currentScrambledWord LiveData のオブザーバー
を入れるか、LiveDataが不要?

6. オブザーバーをスコアと単語数に接続する

ステップ 2: オブザーバーをスコアと単語数に接続する

onViewCreated()メソッドの最後にあるGameFragmentで
currentWordCount LiveData  ← この2つは何を指摘しているのか思い出せない(ノ∀`)

LiveDataオブザーバーもバインディング式も便利でええのぅ(・∀・)

TalkBackはまた飛ばす。