IT/Android

[Android] Only fullscreen opaque activities can request orientation

pandada 2019. 8. 2. 21:16
반응형

 

 

Only fullscreen opaque activities

 

 

can request orientation

 

 

안녕하세요. 오늘은 안드로이드 에러사항 관련한 포스팅 2번째 인데요. 

 

일단 제가 실수로 인해서 에러를 발견할 경우에 해당 사항을 올리는데요.

 

그래서 오늘 제가 발견한 에러 사항은 바로 이거입니다.

 

 java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

 

 

이거 뭐지? 난 왜 처음 본것 같지.. 라고 생각하시는 분들이 꽤 계실텐데요.

 

일단 에러사항을 발견했을때의 우리의 대처를 확인해봅시다.

 

 

< 에러 발생 내용 >

 

자 일단 이것인데.. 대부분의 에러사항 로그에서 확인하기 가장 쉬운것은

 

처음에서 네 번째 줄 사이에서 확실한 문제점을 파악할 수 있습니다.

 

여기서의 문제점은 어떤 것일까요? 일단 하나하나 따지고 들어가봅시다.

 

( 처음 하시는 분들도 있을 수 있으니 처음 내용은 좀 자세하게 진행을 하도록 하겠습니다. )

 

 

 java.lang.IllegalStateException

 

 

일단 흔히들 말하는 "일리걸스테이트익셉션"입니다.

 

저는 그냥 "일리걸" 에러라고 부르는데요. 이게 뭔지 가장 큰 틀부터 보시고 가시겠습니다.

 

일단 안드로이드 Developers API 문서를 보시면...

 

 

https://developer.android.com/reference/java/lang/IllegalStateException

 

 

링크는 여기입니다. 일단 봐보시면 적절하지 않은 시간에 메소드가 호출 되었다고 하는데요.

 

보통 JAVA 환경 또는 JAVA응용 프로그램이 요청된 작업에 적절하지 않다고 하는데..

 

처음하시는 분들은 이건 무슨소리야!!!! 이러실 수도 있습니다.

 

이거 솔직히 Runtime 에러와 마찬가지로 가장 흔하게 보실 수 있을 겁니다.

 

그리고 개발하시는 분들에게 추천을 드리자면 

 

항상 API 문서 보는 법을 실천화 하시는 것이 좋습니다.

 

자 일단 대충 설명을 드렸는데... 매우 다양한 이유로 발견이 되므로.

 

일단 제가 했을때의 방식을 말씀드리도록 하겠습니다.

 


제가 에러난 순서

 

 

1. 커스텀 다이얼 로그를 뿌려주려고 개발 준행 중이었다.

 

 

2. 팝업 관련 액티비티 생성 후 커스텀 작업 완료하고 진행을 했는데 뜬금없이 이런 에러가 발생했다.

 


 

일단 제가 했던 순서는 이렇습니다. 

 

아까 제가 위에서 API 문서를 보여드렸는데... 그 부분을 어느정도 보셨다면..

 

쉽게 이해는 하시겠지만... 아마 대충 보셨으면 이해가 아직 덜 되셨을 수도 있습니다.

 

개발자를 하고 싶으신 분들이라면 제발!! API 문서랑 친해지시길 바라겠습니다.

 

일단 상세 에러 내용부터 보시죠.

 

Only fullscreen opaque activities can request orientation

 

 

이게 상세 내용인데.. 직역을 하면 제가 팝업 설정을 하면서

 

팝업 겉에 부분은 불투명하게 처리를 하면서

 

터치하면 밖으로 빠져나가지 않게 작업을 하려다가 생긴 에러였습니다.

 

즉, 투명/불투명 작업을 하다가 발생한 에러이다! 라고 보시면 편할 것 같네요.

 

자 일단 제가 만들었던 Manifest 파일부터 보시죠.

 

 

< Manifest 내용 >

 

여러분들과 별 다를 것 없을겁니다. 일단 메니페스트에 액티비티 내용 있고,

 

그다음에 스크린 오리엔테이션 맞춰줬고 테마 다이얼로그 해줬는데...

 

뭐가 문제인건가.. 하고 생각하시는 분들이 꽤 많으실 것 같습니다.

 

하지만 문제 사항은 바로 가까이에 있습니다.

 

개발자를 하고 싶으시다 하면 등잔 밑을 잘보셔야합니다.

 

항상 버그나 에러 사항은 가까이에 존재하는 법입니다.

 

일단 문제점에 대해서 말씀드리면 스크린 고정을 위해 screenOrientation을 넣었는데.. 

 

가로/세로 고정을 지정할 필요가 없었던 것이었죠. 왜?!

 

어차피 커스텀 팝업에서 이미 지정해주니까 별 필요 없었다. 이말입니다.

 

자 그럼 제가 발견한 에러는 어떻게 수정을 해야할까요?!

 

1. screenOrientation을 제거한다.

 

2. screenOrientation을 android:screenOrientation="unspecified" 이렇게 지정해준다.

 

이정도입니다. 솔직히 둘다 똑같은 말이라고 보시면 됩니다.

 

빼거나 지정하지 않거나. 이렇게 하니 에러가 생기지 않았습니다.

 

뭐 다른 분들은 구글의 SDK 버전 문제다 뭐다 그러는데

 

저는 일단 이렇게 해서 간단하게 해결이 되었습니다.

 

문제있으신 분들은 저처럼 진행 해보시면 좋을 것 같습니다.

 

혹시 위 사항대로 진행했는데 안되시거나 질문사항 있으시면 댓글로 남겨주세요~

 

그럼 답글 남겨드리도록 하겠습니다.

 

오늘 하루도 힘내세요!

 

 

 

 

 

반응형