テキスト コンポーザブルを使用してシンプルなアプリを作成する②

前回の続き

kumamemo.hatenablog.com

 

アプリ完成図

これを実際に作ってみよう、という試み。

 

Android Studio のデザインペイン

AndroidStudioでは["App"の実行]により、開発中のアプリがどのように動くかを確認することができます。同様に、[Design]ペインでCompose可能な関数をプレビューすることが可能です。

 

Previewのコード

デフォルト状態は「Hello Android!」。このメッセージを少し変更させてみましょう。

[BirthdayCardPreview]関数で呼び出しているGreeting("Android")をGreeting("James")に書き換えてみる。

 

名前の部分が変わりました。このようにPreview内のテキストを変更させてみましたが、これはDesignペインでのプレビュー専用なのでアプリには反映されません。

アプリ画面はそのままなら、@Previewを作る必要性って一体…と思えますが、後々わかると思うのでスルーします。

 

新しいテキスト要素を追加する

今度は名前ではなく、メッセージ自体を変更してみましょう。

[Greeting]関数のコードをすべて消去。

 

[Greeting]関数が消えたことにより、[Greeting]関数呼び出しのコードが赤字になりました。このままではエラー扱いとなりアプリを動かすことができません。

 

[Greeting]関数呼び出しのコードを消去します。

Greeting関数に関連したコードが完全に消えました。ここから新しくCompose可能な関数を追加していきます。

BirthdayCardPreview()関数の前に、GreetingText()という新しい関数を追加。この関数の前に、[@Composable]アノテーションも追加してあげます。

追加する場所が@Previewの前か後ろどちらなのか分からなかったけど、おそらく@Previewの後ろで合ってると思います。

 

次。学習サイトではこのように書いてます。

わけのわからん単語、Modifer(直訳で"修飾子")パラメータを、GreetingText関数に追加しろという話。

これでいいみたい。頭文字が小文字だったり大文字だったりするので注意。

 

次、String 型の message パラメータをコンポーズ可能な関数 GreetingText() に追加します。もう何を言ってるのかさっぱりわからないが、とにかく追加する。

さっき追加した[modifier:]...の手前に、[message: String,]と追加。Stringの後に” , ”(カンママーク)を加えてあげないと、messageパラメータとmodifierパラメータが区切られないので注意。

それと、messageパラメータを追加した瞬間、[Preview]アノテーションが真っ赤になりました。もしかして[GreetingText]の加える場所が間違っていたのかもしれない。

Previewの前に移動させたらエラーが出なくなった。やっぱり場所間違えてたみたい。

 

パラメータの追加が済んだところで、いよいよテキストを追加していきます。

GreetingText()関数に、Textコンポーザブルを追加します。

テキストメッセージを名前付き因数として渡す為に、

text = message

というように書きます。意味は、わかりません。

 

次に、今作ったGreetingText関数をプレビューしてみます。

BirthdayCardPreview関数内に、GreetingText()関数を呼び出すコードを記述。

 

このようになります。

関数を呼び出す為に「GreetingText」と書くのは何となく分かるけど、(message = "")を付ける意味がいまいち分からない。何のためにあるのだろうか…

 

学習サイトには、

String 引数(友人への誕生日祝いのメッセージ)を GreetingText() 関数に渡します。必要に応じて、"Happy Birthday Sam!" などの名前でカスタマイズできます。

と書いてある。String引数がどれなのか分からないのと、Greetingtext関数に渡すといっているが、[fun GreetingText]なのか、[BirthdayCardPreview]内の[GreetingText]なのかもわからない。考えれば考えるほど謎が深まっていくので一旦中断します。