YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Chinese, Traditional subtitles

← Inheriting Behavior

Get Embed Code
13 Languages

Showing Revision 1 created 11/18/2015 by Fran Ontanaya.

  1. 讓我們回到JustJava軟體一下子
  2. 看看MainActivity等級\displayMessage方法
  3. 事情在這裡開始有頭緒
  4. 我們已經知道在創造叫
    orderSummaryTextView的變數
  5. 這個變數的資料類型是TextView
  6. 這部份我們還不了解
  7. 在下一行,我們呼叫
    這個文字檢視目標的方法
  8. 我們使用上述相同的變數名稱
  9. 所以稱為
    orderSummaryTextView.setText
  10. 然後通過一個字串
    作為方法的輸入
  11. 字串訊息原本是輸入參數
  12. 顯示訊息方法
  13. 現在讓我們深入了解這個編碼
    那是我們還不了解的
  14. 看來findViewById是個方法呼叫
  15. 因為是在這些括號之前
    看起來像個輸入自變數
  16. 但奇怪的是,這個方法
    沒有在這等級中定義
  17. 若我點兩下名稱
    然後點command F
  18. 或Windows上的control-F
    我們可以試著搜尋檔案
  19. 我只有看到findViewById兩個事件
  20. 用法都很類似
  21. 但我沒看到叫findViewById的方法
  22. 講到這裡,稍早在主要活動等級
  23. 我們看到呼叫setContentView
    但若你搜尋
  24. 這個檔案,並沒有在
    主要活動裡定義
  25. 因此,這些方法在哪裡定義?
  26. 主要活動其實是個很短的檔案
  27. 只有大概90行
  28. 但這個等級比眼睛看到的還多
  29. 編碼說延伸AppCompatActivity
  30. 這表示主要活動是一個
  31. AppCompatActivity
    等級功能的延伸
  32. 若你在電腦看到活動列活動
    那沒關係
  33. 那只是較舊的版本
  34. 你應該要用的最新版本是
    AppCompatActivity
  35. AppCompatActivity給我們
    倒退相容支援
  36. 較舊的Android裝置
  37. AppCompatActivity是
    Android支援圖書館的一部分
  38. 讓我們能在較舊的Android裝置
  39. 使用Android的最新UI功能
  40. 透過延伸AppCompatActivity等級
  41. 我們會得到所有的功能
    所有的狀態以及
  42. MainActivity裡免費的方法
  43. 我們不需要複製貼上編碼
  44. 我們只要延伸等級
  45. 若你有興趣
  46. 你能搜尋AppCompatActivity
    找到更多訊息
  47. 這是AppCompatActivity等級的參考文件
  48. 因為我安裝Chrome延伸
  49. 我也可以檢視來源
  50. 這是AppCompatActivity等級
    定義的編碼
  51. 你可以看到這裡有很多功能
  52. 但是主要訊息是
    你不需要了解如何執行
  53. 你所要知道的是
    當你延伸AppCompatActivity
  54. 你會免費得到這個功能
  55. 在高等級你可以看到這樣
  56. 這是MainActivity的等級定義
  57. 假設你有些方法定義
  58. 當你延伸AppCompatActivity
    我們則可以進入狀態
  59. 以及從AppCompatActivity的方法
  60. 現在,他們還沒有真正
    加到主要活動等級
  61. 但你可以想像他們在那裡
  62. 因為你還是可以參考
    狀態以及方法
  63. 這是我們的編碼如何
    參照向setContentView或
  64. findViewById的方法
  65. 因為我們承襲這些方法
    我們沒有在MainActivity定義他們
  66. MainActivity出現在裝置螢幕
  67. 但我們沒有寫MainActivity的編碼
    我們也是承襲使用
  68. 我們沒有直接從
    AppCompatActivity的狀態與方法
  69. 但我們知道他們在那裡
    並且可以參照他們
  70. 講到承襲
    這部分有好有壞
  71. 有時候我們想承襲行為
  72. 但有時候我們想要稍微修改
  73. 若你想要從承襲等級
    改變一些行為
  74. 你可以複寫特定方法
  75. 你可以在方法上方加
    @override,電腦就會知道
  76. 你不想要AppCompatActivity
    的方法版本
  77. 而是要你定義的版本
  78. 這是個要小心的主題
    並且需要很多練習
  79. 但我們已經看過從AppCompatActivity
  80. 複寫的一個例子
  81. 這個方法是on create method
  82. 透過在MainActivity複寫
    on create method,我們明訂
  83. 這個方法被呼叫時
    要發生的事
  84. 若你並沒有馬上了解,別擔心
  85. 我只是給你一些目標導向程式概念的
  86. 簡短概要
  87. 你仍有問題是絕對在預期內的
  88. 還需要閱讀更多這個主題
  89. 來完全了解
  90. 另一個方式來看
    MainActivity
  91. 與AppCompatActivity等級
    是畫一個等級階級圖
  92. 這與檢視階級圖不同
  93. 因為檢視階級圖顯示
    螢幕出現的項目樹狀圖
  94. 等級階級圖顯示不同Java等級的
  95. 關係
  96. 有AppCompatActivity為總綱
  97. 由於MainActivity
    從AppCompatActivity延伸
  98. 這是子等級
  99. 當你看到這個等級定義
    你延伸的東西叫做
  100. 總綱
  101. 這會是子等級
  102. 若你建立另一個叫
    detail activity的活動
  103. 你延伸AppCompatActivity
    這會是子等級
  104. 這會是總綱
  105. 這裡有另一個Java等級承襲的例子
  106. 若你去思考
    文字檢視、影像檢視
  107. 與按鍵檢視都有共通點
  108. 這些檢視在螢幕上都有寬與高
  109. 我們還沒學到
    但他們也有可見度狀態
  110. 所以他們可以隱藏或顯示
  111. 還有一些其他特性
    都是很常見的
  112. 除了在文字檢視等級
    寫出這些編碼
  113. 然後複製到影像檢視
    然後按鍵檢視
  114. 我們可以做些聰明的動作
  115. 我們可以建立檢視等級
  116. 我們可以從這些檢視
    擷取共通的特性
  117. 然後放到檢視等級
    如此一來,只要寫一次編碼
  118. 但我們如何讓文字檢視等級
    與檢視等級
  119. 有相關聯性?
  120. 若你想到承襲,你就對了
  121. 在TextView java檔案
    我們要定義文字檢視等級
  122. 如此一來我們會從檢視等級
    承襲所有的數據與方法
  123. 則不需要在TextView等級
    有很多編碼
  124. 因為部分的功能已經寫在檢視等級
  125. 同樣適用ImageView
  126. 與按鍵等級
    我們不用寫那麼多編碼
  127. 在這些檔案裡,我們只要寫
  128. ImageView與檢視等級不同的地方
  129. 我把這想成定義變量
    所以ImageView等級只要
  130. 定義ImageView與檢視等級的差別
  131. 若我們不想要從檢視等級
    承襲特定行為
  132. 我們可以在ImageView等級
    與任何等級
  133. 指定更新的行為
  134. 提醒你用詞,在這等級裡
  135. TextView會是子等級
    檢視會是總綱
  136. 若我們回到TextView的文件
  137. 我們可以了解這個部分
  138. 這是TextView延伸檢視
  139. 現在我們知道這表示
    我們從ViewClass承襲
  140. 狀態與方法
  141. 下面這裡是等級階級圖
  142. 顯示TextView等級
    從ViewClass承襲
  143. 依次,檢視等級從目標等級承襲
  144. 若你探索,你可以發現其他等級
  145. 像是EditText等級
    是從TextView等級的延伸
  146. 從TextView等級採用行為
  147. 然後增加一些特定的功能
  148. 因此EditText從TextView延伸
  149. 然後TextView從View延伸
    View從Object延伸
  150. 這就是等級階級圖
  151. 這裡有很多內容
    你可以看上很久
  152. 但讓我說明TextView文件頁另一件事
  153. 我要說明SetVisibility的方法
  154. 這是TextView等級中
    SetVisibility的Java方法
  155. 讓文字顯示或隱藏
  156. 若我點這個方法
    會帶我到View等級
  157. 然後說明這個方法的用途
  158. 因此你可以看到TextView目標
    有設定可見度方法
  159. 但這其實是從View等級承襲而來
  160. 因此這個功能是免費的
    從View等級來
  161. 好,我們剛說了很多新概念
  162. 通常這是電腦科學
    一學期的課程
  163. 我們現在要做點練習
  164. 希望可以讓你連貫起來
  165. 但要知道這需要很多時間
  166. 以及練習來完全了解這些概念
  167. 好,第一個習題
    我要你建立另一個新Android軟體
  168. 因為我們不要把just Java軟體搞砸
  169. 當你建立案子之後
    執行軟體
  170. 當你建立軟體後
    你會看到MainActivity檔案
  171. MainActivity檔案會從
    AppCompatActivity延伸
  172. 在你的Android工作室版本
    若MainActivity從
  173. ActionBarActivity延伸
    那也沒關係
  174. 那是AppCompatActivity的舊版本
  175. 透過移除方法複寫
    我們要回去
  176. onCreate方法出現在
    AppCompatActivity的方法
  177. 這個方法的出現
    說我們onCreate
  178. 要不同的MainActivity行為
  179. 因此移除這個
    帶我們回到
  180. AppCompatActivity等級的原始狀態
  181. 當你執行軟體
  182. 跟第一次執行軟體相比
    你發現什麼不同?
  183. 在文字框格寫下你的答案