Mobile Front/Android(kotlin) 10

[Android] onActivityResult resultcode always 0 (resultCode 0 문제)

이건 사실 예전에 사진 관련해서 startActivityForResult를 사용할 때 겪었던 문제인데 항상 resultCode가 0이 되는 문제였다. 이 문제는 startActivityForResult에 대해 잘 몰라서 발생했던 것 같다. Activity A에서 Activity B 로 startActivityForResult를 했으면 B에서 A로 돌아올 때 그냥 finish()를 해주는 게 아니라, val intent = Intent(this, MainActivity::class.java) setResult(RESULT_OK, intent) finish() 이렇게 setResult(RESULT_OK, intent)를 해줘야한다.

onActivityResult에서 apiException 10, apiException 20501 문제

최근 firebase로 구글 아이디 로그인 인증을 구현하려고 하는데 계속 apiException10과 apiException20501이 번갈아가면서 떴다... 몇시간을 찾아가며 디버깅했지만 해결되지 않았다. 그렇게 자포자기하고 있던 중 로그에 game이 있는걸 발견했고 오류의 원인을 알게되었다.. 바로 이 부분이었다. .Builder()안의 GoogleSignInOptions뒤에 부분이 DEFAULT_GAMES_SIGN_IN으로 되어있었다. 이렇게 DEFAULT_SIGN_IN으로 바꿔준뒤 apiException20501문제는 해결됐다. 그리고 apiException10 문제는 결국은 firebase 콘솔에 넣어준 SHA-1 지문의 오류일 것이라고 stackoverflow의 사람들이 입을 모아 말했다. 알..

[kotlin] RecyclerView Refresh in Fragment(리사이클러뷰 갱신, 리사이클러뷰 목록 갱신하는 법, fragment recyclerview refresh, notifyDataSetChanged)

* * * 내용의 본론이 급한 사람은 밑의 빨간 글씨부터 읽으면 됩니다 * * * 며칠간 방법을 찾느라 삽질의 삽질한 것을 드디어 구현했다..! 그것은 바로 RecyclerView의 Refresh(갱신) 방법이었다. 정말 오랫동안 구글링을 했는데, 굉장히 다양한 방법들이 있었고 그 중 대다수를 실패했다. 삭제를 했으면 갱신이 되어야 UI상에 리액션이 되고 이를 통해 앱이 올바르게 작동하고 있음을 사용자가 인지할텐데 이것이 안되니 무척 고민이었다.. 필자가 원하는 것은 목록 추가 버튼을 누르면 -> 다른 액티비티에 넘어간 후 -> 그 액티비티에서 추가할 데이터의 정보를 입력한 후 -> 저장을 누르고 나오면 -> 리사이클러뷰가 UI상에서 저절로 갱신 되는 것이었다. 필자의 MainActivity는 위의 사진..

리사이클러뷰 체크박스 오류(recyclerView Adapter error)

필자가 만들고 있는 앱의 목록 삭제 창의 페이지는 checkbox를 담고 있는 item의 리사이클러뷰로 이루어져 있다. 이 체크박스를 통해 data class의 check 값이 true 혹은 false가 되고 true가 된 data들을 대상으로 삭제 버튼 클릭시 삭제가 되는 방식이다.(여러 항목을 동시에 삭제할 수 있게 구현하기 위해 고안한 방식) 근데 문제가 생긴 것이 삭제 페이지 리사이클러뷰를 올렸다 내렸다 하면 체크하지도 않은 항목이 저절로 체크가 되는 문제가 발생한 것이었다. 여러차례 디버깅을 시도한 결과 리사이클러뷰 어댑터의 Holder 속 itemView들의 값 설정 함수안의 코드가 문제임을 알게되었다. (아래 코드블럭의 코드가 문제의 원인이었다.) // editmode에서 memo의 chec..

Floating Action Button 에 원하는 이미지를 커스텀하지 못하는 문제(이미지가 버튼 크기보다 작은 문제)

이 문제는 이미지는 버튼의 크기보다 크지만 기본적으로 fab에서 크기변경을 지원하지 않기 때문에 발생하는 문제였다. 이를 해결하기 위해서는 res -> values에 dimens.xml 파일을 추가해야 한다. 그리고 다음과 같은 코드를 입력한다. 58dp 58dp size_normal은 전체 버튼의 크기이고 image_size는 그 안 사진의 크기이다. 따라서 두 크기를 동일하게 하면 이미지가 버튼 크기만큼 꽉차게 된다. 그리고 floating action button의 xml로 돌아와 다음 코드를 추가해주면 된다. app:fabSize="normal" 간단한 문제인데 해결하는 방법을 찾는건 너무 어려웠다..

Cleartext HTTP traffic to ... not permitted 문제 해결법(Glide error, Glide 오류, 사진 불러오기 실패 문제)

며칠동안 해결되지 않던 문제가 있었다... 식품안전나라에서 공공데이터를 불러와 Glide 를 이용해서 사진을 넣는데 텍스트는 잘 들어가는 반면에 사진만 뜨지 않는 문제였다.. 정말 며칠을 이 문제 해결을 위해 사진 자르기를 쓰려고 사용한 cropper api를 이용해 사진을 불러와도 보고 별의 별짓을 다 해봤지만 문제의 원인조차 알 수 없었다.. 그동안 버그가 있을때는 보통 디버깅시에 빨간색으로 글씨가 떠 해당 코드를 수정하면 됐었지만 이번 경우는 그런 디버깅 메시지조차 없어 너무 답답했다.. 그렇게 거의 반포기 상태로 다른 작업을 우선 이어나갔다. 근데 다른 문제를 해결하기 위해 디버그를 하던 중 디버깅 메시지에서 눈에 들어오는 메시지가 있었다. 바로 Glide가 보내는 메시지였는데, 자세히 읽어보니 ..

dependencies 안전하게 추가하기(라이브러리 적용하는 법, 라이브러리 버전 확인하는 법)

지금까지는 라이브러리를 쓰기위해 dependencies에 코드를 추가할 때, build.gradle (:app)의 dependencies {}에 그냥 바로 집어넣었었다. 하지만 최근 더 안전하게 추가하며, 해당 라이브러리의 최신 버전 또한 쉽게 알 수 있는 방법을 알게 되어 이 글을 작성한다. 우선 File - Project Structure 로 들어간다. 그리고 Dependencies - app 으로 간 뒤 +버튼(Add Dependency)을 누른다. 그리고 밑에 사진과 같이 라이브러리를 검색하면 버전 목록과 함께 검색이 된다. 이제 OK를 누르면 Dependency가 추가된다.

BottomNavigationView의 transparent 문제 (투명하게 하면 화면상 종이 같은게 떠다니는 문제)

xml 에서 속성에 android:background="@android:color/transparent" 을 추가하면 background가 투명하게 된다. 근데 이를 BottomNavigationView에 똑같이 적용했을 때 발생하는 이상한 문제점이 있었다. 위 사진과 같이 종이 같은 것이 뒤에 떠있는 문제였다. 이를 해결하기 위해서는 @android:color/transparent 를 사용하지 않고 새로 xml 파일을 만들어 그 xml파일을 적용시키면 된다. 우선, drawable 폴더에 Root element가 shape인 xml 파일 background_transparent.xml을 만든다. background_transparent.xml 그리고 BottomNavigationView의 속성에 and..

반응형