본문 바로가기

안드로이드/오류해결

(23)
[Android] TargetSdk 33 변경 후 xml 자동완성 기능이 작동 안하는 경우 개요 알람 권한 추가로 인해 OS버전이 13인 디바이스에 권한 요청을 받지 않으면 Notification이 노출되지 않는 문제로 인해 부랴부랴 targetSdk를 33으로 변경하고, 관련 코드를 추가후 배포했습니다. 이후 다른 작업을 진행하는데 xml 자동 완성이 작동하지 않았습니다. 실패한 시도 - 국룰(clean, rebuild) - 프로젝트 캐시 제거 여러개의 프로젝트를 운영하다보니 순간적으로 발생한 상황이라고 생각해 간단한 대처들을 진행했는데 해결되지 않았고, targetSdk 변경으로 인한 문제라고 생각 못했습니다. 성공한 시도 Android Studio를 최신 버전으로 사용하면 정상 작동된다는 글을 발견해 해당 버전(Android Studio Electric Eel | 2022.1.1 RC 3..
[AOS] Webview에 html 코드 로드 하기 ( with. loadData 사용시 안될때 ) 기존에 html 코드를 webview로드할땐 'loadData'만 사용했었습니다. webview.loadData(htmString, "text/html", null) 하지만 일부 페이지에서 작동하지 않아 검색해 보니 html의 일부만 로드해야할 경우엔 'loadDataWithBaseURL'을 사용하라고 하더라구요 예로 로만 되어 있는 코드가 있습니다. 그래서 아래 코드로 구현하니 문제 없이 노출되는걸 확인할 수 있었습니다. webview.loadDataWithBaseURL(null, htmlString, "text/html", "UTF-8",null) 보다 자세한 내용은 공식 문서를 확인해주세요. 공식문서 : loadData ,loadDataWithBaseURL
[AOS] Databinding 사용시 x is public, should be declared in a file named 에러 xml은 언더바 표기법 사용하여 생성합니다. ( ex: activity_main.xml ) 데이터 바인딩 라이브러리를 사용하면 xml을 Binding 클래스를 자동 생성해주는데, 생성된 이름은 카멜 표기법을 사용합니다. ( ex: ActivityMainBinding ) 어차피 똑같은 파일명이 아닌 이상 겹칠일 없다고 생각하고 작업후 빌드를 했는데 아래와 같은 에러가 발생했습니다. 'x is public, should be declared in a file named x.java' 분석 결과 비슷한 파일명의 xml이 있을때 발생했습니다. 저는 activitymain.xml과 activity_main.xml이 있었을 경우 발생해 다른 이름으로 변경해줬습니다.
[ AOS ] - Snack bar bottom margin not working Toast -> Snack Bar 변경 작업을 진행하면서 액션 버튼이나 하단 탭으로 인해 화면에 따른 Snack Bar 하단에 마진을 줘 특정 버튼을 가리지 않아야 했습니다. Snack Bar 구현은 해당 포스팅을 참고해주세요 ! [AOS] SnackBar vs Toast 토스트나 스낵바는 가벼운 메세지를 유저에게 전달할때 주로 사용하는데 장단점이 명확해 상황에 맞게 사용하면 좋을것 같습니다. 로그인 화면에서 아이디를 입력하지 않고 로그인 버튼을 눌 superwony.tistory.com 바텀의 마진을 주는 방법 코드를 찾아 새로운 프로젝트를 만들어서 테스트 했을땐 작동 했지만 기존 플젝에 추가하니 작동하지 않았습니다. val snackbarLayout = snackbar.view as Snackbar...
[AOS] Targeting S+ ( export 선언 ) 에러 대응 안드로이드 TargetSdk31로 변경할 경우 권장되는 사항들이 있습니다. 해당 포스팅에서는 export 선언시 발생했던 문제와 해결 방법을 다루며 자세한 사항은 공식 문서를 참고해주세요. export 설정은 엑티비티나 서비스등에 설정해주는 값으로 AndroidManifest.xml에서 선언하며 엑티비티등이 외부 앱으로부터 호출을 허락하는 경우 true, 그렇지 않은 경우 false로 설정합니다. 인텐트 필터의 경우 false로 설정하면 안되고 설정할 경우 해당 앱을 호출할경우 ActivityNotFoundException이 발생하니 주의 해주세요! 코드 에러 사용중인 엑티비티와 서비스에 위와 같이 모두 선언해줬는데도 여전히 빌드시 에러는 발생했습니다. 한번더 꼼꼼히 보고 비어있던곳에 추가했는데도 에러가..
[AOS] - Fragment에서 layoutInflater 사용시 에러 layoutInflater는 안드로이드에서 View를 생성할때 사용합니다. Fragment나 Recyclerview에서 사용하거나 CustomView를 만들때 사용합니다. 사용시 겪었던 문제와 해결과정을 공유드립니다. Fragment에서 viewCreated시 커스텀탭을 생성하는 과정에서 간헐적으로 에러가 발생했습니다. 아래는 문제가 발생했던 코드의 일부입니다. val view = layoutInflater.inflate(R.layout.layout_tab, binding.layoutTab, false) view를 생성하기전에 context가 null인지 체크했는데도 'layoutInflater' 가 널인 경우가 간혹 있었습니다. 버그가 발생하지 않은 코드입니다. val view = LayoutInfla..
[AOS] Android Studio 'import Module' Error 구글 네이티브 광고를 구현할때 구글에서 제공하는 모듈을 추가해야하는데 ( 네이티브 포스팅은 링크 참고 ) [안드로이드/코틀린] 애드몹 네이티브 광고 기존에 포스팅한 애드몹 배너와 전면 광고에 이어 네이티브를 개발하다가 공식 문서가 업데이트 되지 않은 사항이 있어 간략히 정리 합니다. [안드로이드/Android] 애드몹 전면광고 달기 개인앱에 superwony.tistory.com 어쩐일인지 모듈을 추가할 수 없었다.... 왜 'Finish'가 클릭이 안되는거냐구 어려운것도 아닌데 검색해보니 스튜디오 에러라고 합니다. 범블비 버전에선 해결 됐구요 제가 사용중인 버전은 폭스로 다음과 같습니다. 해결 방법 스튜디오를 최신 버전으로 업데이트 하시면 깔끔합니다. 편안 자의나 타의나 스튜디오 버전을 체크해서 업데이..
[AOS] 이모지 깨짐 현상 ( 파편화 대응 ) 이모지란? 이모지(Emoji)는 Unicode의 그림 문자열을 뜻합니다. 예로 채팅시 디바이스별 제공되는 아래와 같은 친구들입니다. 이모지 파편화 안드로이드나 아이폰 끼리도 다르고 심지어 같은 삼성폰이여도 표현하는 방식들이 다릅니다. 그리고 페이스북이나 트위터와 같은 SNS 플랫폼에서도 각기 다르게 표현합니다. 그래서 이모지가 의도와 다르게 보여지거나 깨져서 안보일 수 있습니다. 예를 들어 서버에서 이모지 스트링을 내려줘서 앱내에 보여줘야 하는 경우 대중적인걸 사용한다고 해도 어떤 기기가 깨지는지 모두 확인하는 건 어렵습니다. ( 테스트시 s10에서는 깨지는데 s21에서는 안깨짐 ) 이모지 파편화 대응 구글에서 이모지가 깨지지 않도록 라이브러리를 제공합니다. ( 공식문서 ) TextView, EditTe..