직접 풀어보기 5-1 (교재 P.206)
[ 코드에 들어가기 전에 ]
- 코드에서 중요하게 생각하는 부분과, 새로 공부하는 부분만 발췌해서 부연 설명
- 코드 전체를 첨부하기에는 비슷한 부분의 반복이고, 읽기도 힘들고, 길어지니 링크 참조
- https://miny-genie.tistory.com/29
<!-- XML Code -->
~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~
<Button
android:layout_width="110dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:gravity="right|top"
android:backgroundTint="#88FF77"
android:text="버튼1"
android:textSize="25sp"
android:textColor="#000000" >
</Button>
<Button
android:layout_width="110dp"
android:layout_height="100dp"
android:layout_gravity="left"
android:gravity="left|center"
android:backgroundTint="#88FF77"
android:text="버튼2"
android:textSize="25sp"
android:textColor="#000000" >
</Button>
<Button
android:layout_width="110dp"
android:layout_height="100dp"
android:layout_gravity="right"
android:gravity="right|bottom"
android:backgroundTint="#88FF77"
android:text="버튼3"
android:textSize="25sp"
android:textColor="#000000" >
</Button>
~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~
android:layout_gravity="center"
gravity와는 다른 문법이다. 지금 이 위젯의 위치를 정하는 문법이라고 하면 이해가 빠르다.
android:gravity="right|top"
위젯의 위치가 아니라 위젯 내의 텍스트의 위치를 정하는 문법이다.
한 가지의 위치만 입력하고 싶으면 right, left, top, bottom처럼 한 가지만 작성하면 된다.
구석의 위치를 입력하고 싶으면 | 를 기준으로 두 개를 입력하면 된다. 순서는 상관없다.
The processing instruction target matching "[xX][mM][lL]" is not allowed.
이건 코드가 아니라 오류이다. AVD 환경을 S21로 바꿔서 XML 위젯 비율을 고치다가 코드를 잘못 건드렸던 것 같다.
XML 설정에서 오류가 생긴 것이다. XML 코드의 첫 줄을 보면 <?xml ?> 형식으로 xml을 정의해준다.
이 부분에서 잘못된 띄어쓰기가 있거나, 주석 처리가 되어 인식이 안 된다면 생기는 오류이다.
코드 맨 앞에 띄어쓰기 한 칸이 있어서 오류가 생겼다... 그래도 문제가 없다면 새로 만들거나 저 부분만 복붙해오자.
class, interface or enum expected
위의 오류를 수정하고 나니까 새로 발생한 새로운 오류이다...
말 그대로 class, interface, enum에서 오류가 생긴 거지만... 보통 { 와 } 가 맞지 않아 생기는 오류라고 한다.
자신의 클래스가 괄호로 정확하게 닫혔는지, 실수로 내가 지우거나 하나 더 쓰지는 않았는지 확인하자.
org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.res.ParseLibraryResourcesTask$ParseResourcesRunnable
또 새로운 오류가 나왔다. 앱 빌드 시에 캐시 파일이 꼬여서 발생하는 오류라고 한다.
쉽게 말해서 AVD 환경을 바꿔주다가 캐시 파일에 뭔가 혼선이 발생한 것이다.
Build > Clean Project를 한 후, Build > Rebuild Project를 해주니 해결됐다.
뭔가 자꾸 오류를 고치면 다른 오류 하나가 생기는데, 오히려 좋다. 알아갈 게 늘어난다.