Japanese subtitles

← Casting with findViewById

Get Embed Code
13 Languages

Showing Revision 1 created 10/12/2015 by sp8.

  1. このアプリにコードを
    追加しました
  2. “View orderSummaryTextView
    = findViewById” とあり
  3. “order_summary_text_view” の
    リソース ID を渡します
  4. しかし次の行で
    エラーがあります
  5. “Cannot resolve the
    method setText” と
  6. 出ます
    行を追加すると
  7. この変数で有効な
    メソッド型が出ます
  8. “orderSummaryTextView” の
    変数をここに作成します
  9. TypeView なので
  10. 次の行でメソッドを
    呼び出せるはずです
  11. しかし自動入力の
    候補を見ると
  12. これらは全て
    View メソッドです
  13. TextView 用のものは
    ありません
  14. 例えば setText メソッドは
    ないので
  15. エラーになり
    setText を呼び出しても
  16. テキストのサイズや
    色の設定は不可です
  17. ではそのメソッドは
    どこでしょう
  18. TextView は特定的な
    View の型なので
  19. このオブジェクトで
    TextView メソッドを
  20. 呼び出すには TextView
    オブジェクトであること
  21. 今度は変数が
    TextView オブジェクトです
  22. しかし普通のビューを
    探しているにも拘らず
  23. 右側に TextView が必要な為
    “型が合わない” と出ました
  24. findViewById メソッドが
    View に戻るからです
  25. ではどうやって
    一致させるのでしょう
  26. TextView が View の
    特定の型ということは
  27. TextView は View のサブクラス
    つまりキャストが使えます
  28. Java でのキャストは
    このメソッドで
  29. 戻った View を TextView
    として扱えるので
  30. 右側は TextView
    オブジェクトで
  31. orderSummaryTextView に
    保存できます
  32. 新しいことを
    多く学んだばかりで
  33. 参ってしまいますよね
  34. 再度説明します
  35. findViewById メソッドは
    View 型のオブジェクトになり
  36. この様に丸括弧して
  37. 真ん中にオブジェクトの
    データ型を入力します
  38. View を TextView の
    中にキャストします
  39. そして TextView オブジェクトを
    全ての宣言が評価します
  40. すると左側に
    “TextView” 型を持つ
  41. 変数 “orderSummary
    TextView” が保存できます
  42. 下の行では TextView
    メソッドが呼び出せます
  43. 全てのテキストメソッドが
    表示されましたね
  44. setAllCaps や
    setTextSize 等があります
  45. setText で大丈夫なはず
    なのでこれは消します
  46. エラーが
    なくなりました
  47. TextView メソッドの
    使用を可能にするには
  48. TextView オブジェクトが
    必要になります
  49. TextView オブジェクトには
    findViewById が必要なので
  50. View オブジェクトを
    TextView にキャストします
  51. キャストが
    有効な理由は
  52. ビュー階層の View が
    TextView だからです
  53. ラジオボタン等には
    キャストできません
  54. “order_summary_text_view”
    がTextView だからです
  55. キャストは適切な型に
    対して行いましょう
  56. displayQuantity メソッドも同様
    “findViewById” を呼び出して
  57. 数量 TextView の
    リソース ID を渡します
  58. これが View を戻すので
    “TextView” にキャストします
  59. すると変数 quantityTextView に
    保存できます
  60. この変数には
    TextView 型があり
  61. 下の行で “setText” 等
    TextView が使えます
  62. キャストを使った最新の
    MainActivity コードです
  63. TextViews に Views を
    キャストして TextViews 型の
  64. 変数に保存ができるので
    MainActivity のリストでは
  65. “quantityTextView” と
    “orderSummaryTextView” は
  66. TextView 型です—これを
    TextView メソッドと呼び
  67. Views として扱う
    だけでなく
  68. この変数では TextView に
    特化したメソッドもあります
  69. orderSummaryTextView で
    setText が呼び出せます
  70. また quantityTextView
    でも setText が呼び出せます
  71. 見ての通り
  72. どのデータ型をどこで
    使うか注意が必要です
  73. メソッドを呼び出す時は
    setText メソッドに
  74. 戻り値がなかったため
    気にしませんでした
  75. imageView.setImageResource
    メソッドでも同様です
  76. これも戻り値が
    ありません
  77. しかし他のメソッドは
    どうでしょう
  78. 例えば TextView クラスの
    getTextSize メソッドは
  79. 戻り値が
    整数型です
  80. 戻り値は int 型の
    変数 “size” で保存できます
  81. 戻り値のあるメソッドの
    もう一つの例です
  82. Button クラスで
    getHeight メソッドを
  83. 呼び出すと整数値を
    戻して変数に保存が可能
  84. もしストリングの中で
    結果の保存を試みると
  85. メソッドが整数を戻すので
    エラーになります
  86. メソッドに渡すべき
    データ型やメソッドから
  87. 戻るデータ型を知るには
    Documentation を確認します
  88. 例えば
    TextView クラスでは
  89. これらを呼び出す場合
    int 型の値を戻します
  90. 戻り値のデータ型は
    左の列にあります
  91. 他にも戻り値には “void” や
    “booleans” もあります
  92. まだ習っていませんが
    “floats” “longs” 等もあります
  93. この Documentation は
    各メソッドに入力する
  94. データ型も示します
  95. setTextColor メソッドなら
    整数の入力が必要です
  96. 戻り値は “void” なので
    戻り値はありません
  97. Android Studio でデータ型の
    不一致のエラーが
  98. 出ないようデータ型を
    Documentation で
  99. 確認しましょう
  100. それでは練習です
  101. これらは4つの異なる
    コード例です
  102. いくつかにはデータ型の
    不一致のエラーがあります
  103. 見つけたら
  104. 修正方法をボックスに
    書いて下さい
  105. 間違いがなければ
    “No error” と書いて下さい
  106. 多くの新しいコードを
    勉強したばかりなので
  107. 少々難しいかも
    知れません
  108. Documentation を確認しながら
    じっくりと解いて下さい
  109. 入力内容と戻り値が正しいか
    必ず確認しましょう
  110. 変数の宣言でデータ型が
    正しいか確認しましょう
  111. また正しくメソッドを
  112. 使っているか Documentation で
    確認しましょう