Korean subtitles

← 12-36 Casting with findViewById - Solution

Get Embed Code
13 Languages

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

  1. 1번을 살펴봅시다.
  2. 스튜디오에 붙여 넣을 것입니다.
  3. 어떠한 종류의 오류가 나오는지를
    보여드릴 것입니다.
  4. 이 문제를 해결하고자 할 때, 안드로이드
    스튜디오를 사용할 필요는 없습니다.
  5. 단지 이곳의 코드 확인을 통해서
    해결이 가능합니다.
  6. 그리고 답을 적으시면 됩니다.
  7. 안드로이드 스튜디오의 사용은 아무
    관련이 없습니다.
  8. 코드가 작동하도록 하기 위해,
    새로운 프로젝트를 만들고
  9. [activity]
    [main layout]을 변경하였습니다.
  10. 따라서 우리가 참조하고자 하는 이들
    ID들을 가진 많은 뷰를 갖게 됩니다.
  11. 이 레이아웃이 어떻게 될지는 잘
    모르겠습니다. 하지만
  12. 해당 뷰 ID 명칭들과 함께 뷰들을
    이곳에 두고자 합니다.
  13. 이 같은 방식으로 나의 코드는
    실행될 것입니다.
  14. 1번에 대해, 코드를 이곳에 붙여
    넣고 오류를 살펴보았습니다.
  15. 안드로이드 스튜디오는 [method]
    [setText]를 해결할 수 없음을 나타냅니다.
  16. [setText]가
  17. [TextView] [method]임을 언급한
    지난 영상을 기억하십니까?
  18. 이는 [TextView] 객체에 이 [method]만을
    호출할 수 있다는 것을 의미합니다.
  19. 이 같은 경우,
    이것을 [nameTextView]에 호출합니다.
  20. [nameTextView]는 뷰 객체로
    규정됩니다.
  21. 이를 [TextView] 객체로 변경하여야
    합니다.
  22. 잘못된 유형이 있음을
    나타내는 오류가 발생되었습니다.
  23. 유형의 객체인 [TextView]가
    필요합니다. 하지만 [type view]의
  24. 객체를 검색하였습니다.
  25. 이로 인해 뷰를 반환하는 ID를 통해
    뷰를 검색하고 이 좌측은
  26. [TextView]를 필요로 합니다.
  27. 이것은 [findViewById]에 의해
  28. [TextView]로 반환된 뷰의 캐스팅을
    추가하여야 함을 의미합니다.
  29. 그리고 [nameTextView]인
  30. 이 모든 것을 좌측 변수에 저장할 수
    있습니다.
  31. 이제 오류가 사라지고 "Laura"라는
    문자를 이 [TextView]에 설정할 수 있습니다.
  32. 오류는 1행에 발생하였습니다. 따라서
    정확한 코드를 이곳에 적었습니다.
  33. 전반적인 설명은 이 뷰를 [TextView]로
    캐스팅 하는 것이 필요하고 이를
  34. [nameTextView] 변수 내부에 저장하는
    것입니다.
  35. 이 같은 방식으로, 이곳의 코드 행 옆에
    [TextView] [method]인
  36. [nameTextView.setText]를 호출할 수
    있습니다.
  37. 2번으로 넘어가 봅시다.
  38. 이 코드를 복사하여 안드로이드
    스튜디오 붙여 넣을 것입니다.
  39. 여기에 제가 붙여 넣은 코드가 있습니다.
  40. 첫 코드 행은 정확한 것 같습니다.
    오류가 없습니다.
  41. 하지만 두 번째 행은 붉은 색 밑줄이
    있습니다. 그리고
  42. 잘못된 유형의 오류가 있음을
    나타냅니다.
  43. 문자열이 요구됨을 나타냅니다.
    하지만, 대신 [int]를 검색하였습니다.
  44. 이를 더 잘 이해하기 위해, [TextView]
  45. 문서 내부에 있는 [method]
    [getMaxLines]를 살펴보도록 합니다.
  46. [TextView] 문서에서,
    [getMaxLines] [method]를 검색할
  47. 것입니다.
  48. 여기 있네요.
  49. 입력 파라미터는 없고
  50. 이 [method]의 반환 값은
    정수입니다.
  51. 안드로이드 스튜디오는 이
    [method]로 인해 문제를
  52. 제기하였습니다. 이것은 정수를
  53. 반환하였고 우리는 이를 문자열
    변수에 저장하려고 하였습니다.
  54. 따라서, 이 변수의 데이터 유형을
    [int]로 변경해야 합니다.
  55. 오류가 사라졌습니다.
  56. 따라서 이 [method]의 반환 값은
    정수입니다.
  57. 이제 이것을 이 [maxLines] 변수에
    저장할 수 있습니다.
  58. 경고가 사라지지 않았습니다.
  59. 변수 [maxLines]을 사용할 수 없다고
    나타냅니다.
  60. 하지만 이것은 단지 코드 정보입니다.
  61. 일반적인 앱에서는
    나중에 실질적으로 이 변수를
  62. 사용할 것으로
    생각합니다.
  63. 따라서 2행과 이곳의 오류는
    업데이트 된 코드입니다.
  64. 이에 관한 전반적인 설명은
    이 [method]의 반환 값이
  65. 정수여야 한다는 것입니다.
  66. 3번으로 넘어가 봅시다.
  67. 이곳에 3번에 대한 코드가 있습니다.
  68. 안드로이드 스튜디오의 3번에 대한
    코드를 복사하고 붙여 넣었습니다.
  69. 잘못된 유형이라는 오류 메시지가
    발생되었습니다.
  70. [ImageView]가 요구되었습니다.
    하지만 대신 뷰를 검색하였습니다.
  71. 이는 우리가 [TextView]에서
    발견하였던 오류와 비슷합니다.
  72. 이 [method]는 뷰를 반환합니다.
  73. 좌측 면에서 [ImageView]에 이를
    저장하려고 합니다.
  74. 이 뷰 객체를 [ImageView]로 캐스팅
    해야 합니다.
  75. ID 아이콘을 가진 뷰가 [ImageView]
    이기 때문에 유효합니다.
  76. 따라서 이것을 [image view]로 캐스팅
    하는데 문제가 없습니다.
  77. 이제 우측 면은
    [ImageView]를 평가합니다.
  78. 이를 좌측의 변수에 저장할 수
    있습니다.
  79. 이 변수는 데이터 유형 [ImageView]를
    갖습니다. 자 이제 모든 것이 일치하고
  80. 오류는 사라졌습니다.
  81. 다음 부분에서, [ImageView]
    [method], [SetImageResource]를
  82. 이 [IconImageView] 객체에 호출할 수
    있습니다.
  83. 상징 로고를 처리할 수 없다는 오류가
    하나 남아있습니다.
  84. 이로 인해 명칭에 대한 로고를 가진
    앱의 이미지를 추가하지 않았습니다.
  85. 추가하였다면, 오류가 사라질 것입니다.
    그리고 이곳의 코드는 문제가 없습니다.
  86. 여기 이 뷰를 [ImageView]로 캐스팅
    한 정확한 코드가 있습니다.
  87. 마지막으로, 4번입니다.
  88. 안드로이드 스튜디오에서 이곳에 코드를
    붙여 넣었고 놀랍게도 오류가 없습니다.
  89. 코드는 id 명을 가진 뷰를 검색하고
    뷰를 반환하려고 합니다.
  90. 그리고 이는 [TextView]인 이 변수에
    저장됩니다.
  91. [TextView]는 뷰의 데이터 유형을 갖고
  92. 이는 우측 면과 일치합니다.
    따라서 이 전체 코드 행은 정확합니다.
  93. 다음 행에서, 우리는
    [View]인 이 객체를 가질 것입니다.
  94. 그리고 여기에 [setVisibility]
    [method]를 호출할 것입니다.
  95. [method]는 [View.GONE]인 하나의
    입력 파라미터를 갖습니다.
  96. 왜 이것을 갖는지를 알아보기 위해
    문서를 확인해 볼 수 있습니다.
  97. 뷰 클래스에 대한 문서에서,
    [method] [setVisibility]를 검색할 수
  98. 있습니다.
  99. [setVisibility]가 뷰 클래스 내에 있는
    [method]임을 확인할 수 있습니다.
  100. 이것은 선명도를 나타내는 정수인 이
    입력 내용을 갖습니다.
  101. 가능한 선명도 값들은
    [VISIBLE], [INVISIBLE], [GONE]입니다.
  102. 뷰 클래스 내의 [setVisibility]가
    [method]이기 때문에
  103. 이것은 이곳에서 유효한 호출입니다.
  104. 우리가 호출한 [method]가 뷰
    클래스의 [method]이기 때문에 이를
  105. [TextView]로 캐스팅 할 필요가
    없습니다.
  106. 이제 [TextView] [method]를
    사용하려고 했다면
  107. 이것을 [TextView]로 캐스팅 했어야
    할 것입니다.
  108. 이 문제에 대해, [setVisibility]은 [View]
    [method] 이기 때문에 오류가
  109. 발생되지 않고 이것을 [View]
    객체로 두는 것은 문제가 없습니다.
  110. 이것은 참 어려운 문제입니다.
  111. 완전히 이해하지 못하여도
    괜찮습니다.
  112. 다음 시험에서, 이에 관해 연습할
    기회가 더 있습니다.