Vietnamese subtitles

← 12-36 Casting with findViewById - Solution

Get Embed Code
13 Languages

Showing Revision 1 created 10/18/2015 by sp11.

  1. Hãy nhìn mục số 1.
  2. Trước khi cho biết câu trả lời,
    tôi sẽ copy đoạn code này và
  3. dán nó vào trong Android Studio.
  4. Tôi muốn cho các bạn xem
    loại lỗi nào sẽ hiện ra.
  5. Khi bạn trả lời câu hỏi này, bạn không
    nhất thiết phải dùng Android Studio,
  6. bạn có thể giải nó bằng cách
    nhìn vào những dòng code ở đây
  7. và viết ra câu trả lời.
  8. Vì thế, dù bạn có dùng Android Studio
    hay không cũng không sao.
  9. Để chạy code này,
    tôi đã tạo một project mới và
  10. chỉnh sửa tệp layout của phần
    thực thi chính sao cho
  11. nó chứa nhiều view với những ID
    mà chúng ta sẽ liên hệ đến.
  12. Tôi cũng không rõ
    layout này sẽ trông thế nào
  13. nhưng tôi chỉ muốn đặt view vào đây
    với tên ID view tương ứng.
  14. Bằng cách đó, code của tôi
    sẽ chạy được ở đây.
  15. Ở trường hợp thứ nhất, tôi dán đoạn code
    vào đây và nhận lại một lỗi.
  16. Android Studio cho biết nó không thể
    xử lý phương thức setText.
  17. Nếu bạn còn nhớ ở video trước,
  18. tôi đã nói rằng setText là
    một phương thức TextView.
  19. Điều này có nghĩa là bạn chỉ có thể
    triệu gọi nó trên đối tượng TextView.
  20. Trong trường hợp này, ta đang
    gọi nó trên nameTextView.
  21. nameTextView được định nghĩa
    là một đối tượng view,
  22. chúng ta cần phải chuyển nó thành
    một đối tượng TextView.
  23. Thế rồi chúng ta nhận được một lỗi khác
    về định dạng không tương thích.
  24. Nó cần một đối tượng thuộc dạng
    TextView, nhưng ngược lại
  25. nó nhận được một
    đối tượng dạng view.
  26. Đó là vì phương thức tìm view
    bằng ID sẽ trả lại một view, và
  27. phần bên trái này
    yêu cầu TextView.
  28. Có nghĩa là chúng ta phải
    gán phần view
  29. được findViewById trả lại
    thành một TextView.
  30. Sau đó chúng ta có thể
    lưu tất cả phần nameTextView
  31. vào phần biến ở bên trái.
  32. Vậy là phần lỗi đã biến mất, và ta có thể
    thiết lập dòng chữ "Laura" trên TextView.
  33. Phần lỗi nằm ở dòng 1, vì vậy
    tôi viết dòng code đúng lên đây.
  34. Giải thích ngắn gọn là ta cần phải
    gán view này vào TextView và
  35. lưu nó trong
    biến nameTextView.
  36. Bằng cách đó, chúng ta có thể
    gọi nameTextView.setText,
  37. một phương thức TextView,
    ở dòng tiếp theo của code ở đây.
  38. Hãy xem tiếp mục số hai.
  39. Tôi sẽ copy phần code này
    và dán vào Android Studio.
  40. Đây chính là phần code
    tôi đã dán vào.
  41. Dòng đầu tiên có vẻ đúng,
    không có lỗi nào cả.
  42. Nhưng dòng thứ hai có
    gạch chân màu đỏ và
  43. và nó cho thấy có lỗi
    định dạng không tương thích.
  44. Nó cho biết, ở đây cần một chuỗi
    nhưng nó chỉ tìm thấy một số nguyên.
  45. Để hiểu rõ hơn điều này,
  46. chúng ta nên tìm hiểu phương thức
    getMaxLinestrong tài liệu TextView
  47. Trong tài liệu về TextView,
    tôi sẽ tìm kiếm
  48. phương thức getMaxLines.
  49. Nó đây.
  50. Không có tham số đầu vào, và
  51. giá trị trả về của phương thức
    này là một số nguyên.
  52. Đó chính là lý do mà Android Studio đang
    làm khó chúng ta, vì phương thức này,
  53. nó trả về một giá trị số nguyên
  54. nhưng ta lại đang cố gắng lưu nó
    vào một biến dạng chuỗi.
  55. Kết quả là, tôi sẽ cần phải thay đổi
    dạng dữ liệu của biến thành số nguyên.
  56. Và vấn đề sẽ không còn nữa.
  57. Vậy, giá trị trả về của phương thức
    này là một số nguyên.
  58. Và chúng ta có thể lưu nó
    trong biến maxLines này.
  59. Vẫn còn một cảnh báo nữa.
  60. Nội dung là biến maxLines
    không hề được sử dụng
  61. Nhưng đây chỉ là
    một mẩu code rất nhỏ.
  62. Tôi tin rằng nếu đây
    là một ứng dụng thông thường,
  63. chúng ta sẽ cần phải
    sử dụng đến biến này sau này.
  64. vậy, lỗi nằm ở dòng số 2,
    và đây là code đã cập nhật.
  65. Giải thích ngắn gọn là giá trị trả về
    của phương thức này cần
  66. là một số nguyên.
  67. Hãy xem tiếp số 3.
  68. Đây là code của số 3.
  69. Tôi đã copy và dán phần code
    của số 3 vào Android Studio.
  70. Một lỗi xuất hiện với nội dung
    định dạng không tương thích.
  71. Ta cần một giá trị ImageView,
    nhưng nó chỉ nhận được một giá trị view.
  72. Lỗi này tương tự với lỗi
    ta đã gặp với TextView.
  73. Phương thức này trả về một view.
  74. Và, ở phía tay trái, chúng ta đang
    cố gắng lưu nó trong một ImageView.
  75. Vì vậy chúng ta cần phải gán đối tựợng
    view này thành một ImageView.
  76. Điều này hợp lệ vì phần view với
    ID icon thực chất là một ImageView,
  77. vì vậy chúng ta có thể
    gán nó thành ImageView.
  78. Bây giờ phần code ở phía bên phải
    đã có giá trị ImageView,
  79. ta có thể lưu trữ nó trong một biến
    nằm bên tay trái.
  80. Biến này có định dạng dữ liệu ImageView,
    và giờ mọi thứ đều trở nên hợp lý.
  81. Lỗi không còn nữa.
  82. Tiếp theo, ta có thể gọi
    một phương thức ImageView,
  83. SetImageResource, trên
    đối tượng IconImageView này.
  84. Còn một lỗi nữa cho biết
    không thể thực thi biểu tượng logo.
  85. Đó là vì tôi chưa thêm hình ảnh
    nào vào trong ứng dụng với tên logo.
  86. Chỉ cần tôi thêm ảnh, lỗi này sẽ biến mất
    và code của chúng ta ở đây là đúng.
  87. Đây là code chính xác sau khi tôi đã
    gán view này vào ImageView.
  88. Cuối cùng là số 4.
  89. Tôi dán phần code vào Android Studio,
    và thật ngạc nhiên là không có lỗi nào hết.
  90. Code này đang cố gắng tìm kiếm
    view bằng tiêu đề id, và
  91. nó sẽ trả lại một view, được lưu trong
    biến có tên TextView.
  92. TextView có định dạng
    dữ liệu là View, vì vậy
  93. khớp với vế bên phải,
    toàn bộ dòng code này là chính xác.
  94. Ở dòng tiếp theo, chúng ta
    sẽ lấy đối tượng dạng View này, và
  95. gọi phương thức
    setVisibility trên đó.
  96. Phương thức này nhận một tham số
    đầu vào là View.GONE.
  97. Tôi có thể kiểm tra tài liệu
    để xác minh.
  98. Trong tài liệu cho nhóm view,
    tôi có thể tìm kiếm
  99. phương thức setVisibility.
  100. Tôi có thể thấy rằng setVisibility là
    một phương thức nhánh của nhóm view.
  101. Nó nhận đầu vào là một số nguyên
    thể hiện trạng thái hiển thị.
  102. Các giá trị có thể nhận được là
    VISIBLE, INVISIBLE, và GONE.
  103. Bởi setVisibility là một phương thức
    nằm trong nhóm view,
  104. đây là một triệu gọi hợp lệ.
  105. Ta không cần phải
    gán nó thành TextView.
  106. Bởi vì phương thức chúng ta đang gọi
    là một phương thức thuộc nhóm view.
  107. Giờ nếu chúng ta muốn sử dụng
    phương thức TextView,
  108. chúng ta cần gán nó
    thành TextView.
  109. Vì vậy, với câu hỏi này,
    đáp án là không có lỗi, vì
  110. setVisibility là phương thức dạng View,
    ta có thể để nguyên nó là đối tượng view.
  111. Đây là những câu hỏi khó.
  112. Nếu bạn chưa thể trả lời đúng,
    không sao.
  113. Trong bài kiểm tra sắp tới,
    bạn sẽ có nhiều cơ hội để thực hành hơn.