전체 글 181

[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는 위의 사진..

코드업 기초100제 정리

최근 소프트웨어 마에스트로에 서류합격하고 코딩테스트를 준비하느라 정신이 없었다. 가끔씩 백준에 들어가서 문제를 풀긴 했었지만 지금까지는 전공과목 공부를 하고 앱만드는데만 힘을 쏟느라 제대로 알고리즘을 접해보고 공부해볼 기회가 없었다. 이번 코딩테스트를 통해 알고리즘에 대해 접하고 제대로 공부해볼 수 있어서 합불을 떠나 좋은 경험이 된 것 같다. 소프트웨어 마에스트로 가이드에 따르면 기초100제로 기본을 다지고 백준에서 단계별로 풀어보라고 해서 코드업의 기초 100제 먼저 풀어보았다. 기초 100제를 풀면서 배운점을 정리해봤다. 1. 여러개의 값을 받을 때 map 이용한다. 2. format쓸 때 {0:02d} 3. o는 8진수 x는 16진수, X는 16진수인데 대문자로 나옴 4. int()로 형변환 할 ..

객체 지향 프로그래밍이란?(OOP : Object Oriented Programming)

메소드(method)는 코드들을 담은 상자이다.(함수를 의미) -> 여기까지는 절차적 프로그래밍에서 가능한 것들 근데 범위가 커지고 해야할 작업이 복잡해지면 코드도 길어지고 프로그래밍하기가 벅차진다. 여기서 객체지향 프로그래밍의 요소들이 추가된다. 클래스는 변수들과 메소드를 담은 상자이다. 이렇게 데이터와 기능이 클래스로 ‘캡슐화’된 컴퓨터 자원의 묶음을 ‘객체’라고 한다. 인스턴스는 클래스로 찍어낸 변수로 하나의 클래스안의 변수 값들을 계속 바꿔주다보면 불필요한 코드가 많아지고 오류가 생길 확률이 높다. 이에 따라 다른 초기값을 가진 클래스를 인스턴스 변수에 찍어내는 방식을 쓴다.(클래스를 복제해 또다른 구조를 만드는 방식)(생성자를 이용해 초기값을 원하는 값으로 지정해줄 수 있다. -> 자바의 경우 ..

Base/용어 개념 2021.03.01

생애 첫 앱 출시..(구글 콘솔 등록 시 복잡한 부분 설명)

드디어 만든 앱을 구글 플레이에 등록했다. 아직 구글플레이에서 앱을 검토중이라 출시가 되진 않았지만 별다른 문제가 없다면 1~2주내에 출시가 될 것으로 보인다. 처음하는 것이여서 그런것도 있었겠지만 앱을 스토어에 등록하는 과정은 정말 무척 복잡했다.. 추후에 더 빨리 진행할 수 있게 버벅거렸던 부분들을 간단간단하게 정리하고자 한다. 1. 구글플레이에 앱을 등록하기 위해선 구글 콘솔을 이용해야한다. - 개발자 아이디를 등록해야하는데 25000원을 내야한다.(+해외 결제가능한 카드가 있어야한다.) 2. 개인정보처리방침을 작성해야한다.(잘못하면 앱이 삭제될 수 있다.) - 따로 사이트의 공간을 만들어 작성해도 되고 개인 블로그에 작성해도 된다. - 앱에서도 해당 글에 접근할 수 있도록 해줘야한다. - perm..

구글 플레이 스토어 개인 정보 처리 방침

안드로이드앱 개인정보취급방침 1. 개인 정보의 처리 목적. 본 개발자가 작성한 앱은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. 1) 무료 앱에서 AdMob(애드몹) 광고 라이브러리(Google Play Lib)가 필요로 하는 권한 위임을 위해 사용 2. 개인 정보 처리 위탁 여부 본 개발자의 앱은 타 업체에 개인 정보 처리를 위탁하지 않습니다. 3. 정보 주체의 권리, 의무 및 그 행사 방법 이용자는 개인 정보 주체로서 언제든지 개인 정보 보호 관련 권리를 행사할 수 있습니다. 다만, 본 앱은 앱 사용자의 사용정보를 수집 및 보유하지 않습니다. 앱 기능의 활용에만 사용합니다. 4. 처리하는 개인 정보의 항목 작성 다음의 개인정보 항목을 처리하고..

리사이클러뷰 체크박스 오류(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" 간단한 문제인데 해결하는 방법을 찾는건 너무 어려웠다..

반응형