Korean subtitles

← Casting with findViewById

Get Embed Code
13 Languages

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

  1. 앱에서 살펴보았던 코드를
    추가하였습니다.
  2. View orderSummaryTextView
    = findViewById 입니다.
  3. 그리고 [order_summary_text_view]에
    대한 [resource ID]를 입력합니다.
  4. 하지만 이는 다음 행의 안드로이드
    스튜디오에서 오류를 발생시킵니다.
  5. [method] [setText]를 실행할 수
    없다고 합니다.
  6. 이곳에 다른 코드 행을 추가하면,
  7. 이 변수에 적합한 [method]의 유형을
    보여줄 수 있습니다.
  8. 따라서 [orderSummaryTextView]
    변수를 이곳에 만듭니다 그리고
  9. 이것은 [TypeView]입니다. 따라서 옆
  10. 행에서 이에 대한 [methods]를 호출할
    수 있습니다.
  11. 자동완성 기능을 사용할 경우,
    이러한 [methods]는 실질적으로
  12. [View methods]가 됩니다.
  13. [TextView]에 대한 특정 [method]가 없습니다.
  14. 예를 들어, [setText] [method]는 없습니다.
  15. 따라서 [setText]를 호출하려고 할 때
    이곳에서 오류가 발생되는 것입니다.
  16. 또한 문자 크기나 색상 등도 설정할 수
    없습니다.
  17. 이 [method]는 어디에 있습니까?
  18. 사실 [TextView]는 더욱 세부적인
    유형의 [View] 입니다.
  19. 따라서 이 객체에 대한 [TextView] [method]를
  20. 호출하고자 한다면, 이것이 [TextView]
    객체임을 확인하여야 합니다.
  21. 좋습니다.
    자 이제 변수는 [TextView] 객체입니다.
  22. 하지만 [TextView]는 우측 면에서
    작동되고 우리는 단지 일반적인 뷰를
  23. 찾기 때문에 호환되지 않는 유형이라는
    다른 오류가 발생되었습니다.
  24. 이로 인해 [findViewById] [method]가
    [View]를 반환하는 것입니다.
  25. 어떻게 이를 해결할까요?
  26. [TextView]는 더욱 세부적인 유형의 [View]
    이거나 혹은 [TextView]는 뷰의 하위
  27. 유형이므로, 실질적으로 캐스팅이라는
    것을 사용할 수 있습니다.
  28. 자바에서의 캐스팅은 이 [method]에
    의해 반환되는 [View]를 갖고 실질적으로
  29. [TextView] 처럼 다룰 수 있음을 의미합니다.
  30. 따라서 우측 면은 실질적인 [TextView]
    객체이고 이것의 내부에 이
  31. [orderSummaryTextView]의 변수들을
    저장할 수 있게 되었습니다.
  32. 이미 상당히 많은 새로운 개념들을
    언급하였기 때문에 이것이 상당히
  33. 어려운 내용임을 알고 있습니다.
  34. 다시 한 번 설명해 드리도록 하겠습니다.
  35. [findViewById] [method]는
    [type View]의 객체를 반환합니다.
  36. 이 [notation]을 적음으로써, 해당 객체의
  37. 데이터 유형이 쓰인 괄호들을 중앙에
    배열할 수 있습니다.
  38. 우리는 이 [View]를 [TextView]로 캐스팅 할 것입니다.
  39. 따라서 이곳의 모든 표현들은
    [TextView] 객체를 평가하게 됩니다.
  40. 그리고, 이를 [orderSummary]
    [TextView]인 좌측에 있는 변수에
  41. 저장할 수 있고 이는 [type TextView]의
    유형을 갖게 됩니다.
  42. 다음 행에서, 이 객체에 대한
    [TextView] [methods]를 호출할 수 있습니다.
  43. 모든 문자 [methods]들이 이곳에
    어떻게 나타나는지 확인할 수 있습니까?
  44. [setAllCaps], [setTextSize], 등.
  45. 따라서 [setText]가 실행되어야 하기
    때문에 이를 지우면 이제 더 이상의
  46. 오류는 없습니다.
  47. [TextView] [methods]를 호출하고자 할
    경우, [TextView] 객체를 가져야만
  48. 합니다.
  49. [TextView] 객체를 갖기 위해,
    [findViewById]를 호출하고 이 [View]
  50. 객체를 [TextView]로 캐스팅하여야
    합니다.
  51. 캐스팅 작업의 이유는 뷰 구조 안에
  52. 있는 이곳의 [View]가 실질적으로
    [TextView]이기 때문입니다.
  53. 이를 작동하지 않는 라디오 버튼
    등과 같은 무언가로 캐스팅 하고자 할
  54. 경우, [orderSummaryTextView]가
    실질적인 [TextView]이기 때문에,
  55. 적절한 유형으로 캐스팅
    하여야 합니다.
  56. 이와 같이, [displayQuantity]
    [method]에서, [findViewById]를
  57. 호출하고 이를 [TextView] 수량에 대한
    [resource ID]에 입력합니다.
  58. 이는 [View]를 반환합니다. 그리고 이를
    [TextView]로 캐스팅하면 이를
  59. [quantityTextView]라는 변수에 저장할
    수 있습니다.
  60. 이 변수는 [type TextView]를 갖기 때문에
  61. 다음 행에서 [setText]와 같이 이에
    대한 [TextView] [methods]를 할 수 있습니다.
  62. 여기에 업데이트 된 [MainActivity]
    코드 사용 캐스팅이 있습니다.
  63. 우리는 이 [Views]를 [TextView]로 캐스팅
    할 수 있으므로 이것들을 [type TextView]를
  64. 가진 변수에 저장합니다. 또한
    [MainActivity] 변수들의 목록은 변수들이므로
  65. [now quantityTextView]와 [orderSummary
    TextView]는 [type TextView]입니다.
  66. 이들에 대한 [TextView] [method]를
  67. 호출할 수 있고 이들을 [Views]처럼
    다루는 데에 대한 제한은 없습니다.
  68. 자 이제 이 변수들에 대한 [TextView]의
    특별 [methods]를 호출할 수 있습니다.
  69. 예를 들어, [orderSummaryTextView]에
    대한 [setText]를 호출할 수 있고
  70. [quantityTextView]에 대한 [setText]를
    호출할 수 있습니다.
  71. 아시다시피, 어떠한 데이터 유형이
  72. 어디에 사용되는지에 관해 주의하여야
    합니다.
  73. 지금까지, [method]를 호출하였습니다.
    [setText] [method]가 실질적으로 반환
  74. 값을 가지지 않기 때문에 반환 값에
    대해서는 걱정할 필요가 없습니다.
  75. [imageView.setImageResource]
    [method]와 같습니다.
  76. 여기에 반환 값은 없습니다.
  77. 하지만 다른 [method]는
    반환 값을 가질 수 있습니다.
  78. 예를 들어, [TextView] 클래스에
    [getTextSize] [method]를 가지고 있습니다.
  79. 이는 정수를 반환합니다. 따라서 [type
  80. int]의 크기로 불리는 변수에 이
    [method]의 결과를 저장할 수 있습니다.
  81. 여기 반환 값을 가진 다른 [method]가
    있습니다.
  82. 버튼 클래스에서, [getHeight]
    [method]를 호출할 수 있고
  83. 이는 정수 값을 반환합니다. 따라서
    이를 변수 안에 저장할 수 있습니다.
  84. 예를 들어, 문자열 내에 이 결과를
    저장하고자 하면 이 [method]는
  85. 정수를 반환하기 때문에 오류가
    발생될 것입니다.
  86. 어떠한 유형의 데이터가 [method]에
    입력되고 [method]로부터 어떠한
  87. 데이터 유형이 반환되는지를 알기
    위해 문서를 확인해 보아야 합니다.
  88. 예를 들어, [TextView] 클래스에서,
  89. 어떠한 [method]를 호출할 경우,
    [type int]의 값이 반환됩니다.
  90. 반환 값 데이터 유형은 이곳의 좌측
    행에 있습니다.
  91. 다른 [method]에 대해,
    반환 값 혹은 불 연산자 그리고 아직
  92. 배우지 못한 [floats], [longs] 등과
    같은 것들을 [void]하여야 할 것입니다.
  93. 이 문서 페이지는 또한 각 [method]의
    입력 내용에서 어떤 것이 예상되는
  94. 데이터 유형인지를 보여줍니다.
  95. 예를 들어, [setTextColor] [method]는
    입력 내용으로 정수를 요구하고
  96. 반환 값이 [void] 됩니다.
    따라서 반환 값은 없습니다.
  97. 어떠한 데이터 유형이 예상되는지를
    알아보기 위해 문서를 확인해 봅시다.
  98. 아니면, 안드로이드 스튜디오에 데이터
    유형이 일치하지 않습니다 라고
  99. 나타내는 오류가 발생될 것입니다.
  100. 자 이제 연습해 볼 차례입니다.
  101. 아래에 네 개의 다른 코드 예시가 있습니다.
  102. 일부 코드는 데이터 유형이 일치하지
    않는 것과 관련된 오류를 포함합니다.
  103. 오류를 발견하게 되면,
  104. 어떻게 이를 수정할 것인지를 아래의
    칸에 적어 보십시오.
  105. 아니면, 코드에 이상이 없을 경우
    오류가 없음을 적을 수 있습니다.
  106. 너무나 다양한 개념들을 배웠기
    때문에 이는 상당히 어려운 문제가 될
  107. 것입니다. 그리고 이 코드는 아직도
    당신에게는 새로운 것일 것입니다.
  108. 시간을 가지고 이 [method]에 대한
    문서를 확인해 보십시오.
  109. 입력 내용과 반환 값이 정확한지
    확인하시고 변수를 규정할 수 있다면
  110. 이곳에 정확한 데이터 유형을 갖게 될
    것입니다.
  111. 또한 [method]를 정확히 사용할 수
  112. 있도록 [method] 호출에 관한 문서를
    확인하시기 바랍니다.