학교 공부/안드로이드 프로그래밍

직접 풀어보기 5-1 (교재 P.206)

_빌런 2022. 3. 31. 01:06

[ 코드에 들어가기 전에 ]

  • 코드에서 중요하게 생각하는 부분과, 새로 공부하는 부분만 발췌해서 부연 설명
  • 코드 전체를 첨부하기에는 비슷한 부분의 반복이고, 읽기도 힘들고, 길어지니 링크 참조
  • 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를 해주니 해결됐다.

뭔가 자꾸 오류를 고치면 다른 오류 하나가 생기는데, 오히려 좋다. 알아갈 게 늘어난다.

 

직접 풀어보기 5-1 실행 결과