에러 앱을 배포한 후에 카카오톡으로 로그인이 안된다는 문의가 많았다. 하지만 아무리 qa를 해도 내부 기기에서는 오류가 파악이 안되는 문제가 있었다. 제법 골치아팠는데 알고보니 로컬에서(안드로이드 스튜디오로 디버깅 할 경우)할 때는 로그인이 잘 되지만 플레이 스토어에 릴리즈 한 경우에 문제가 생기는 것이었다. 자세한 로그를 확인해보기 위해 adb로 연결해서 확인해보았다. AuthError(statusCode=401, reason=Misconfigured, response=AuthErrorResponse(error=misconfigured, errorDescription=invalid android_key_hash or ios_bundle_id or web_site_url)) 안드로이드 키 해시가 잘못됐다..
val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager val clip = ClipData.newPlainText("label", "STRING") // 클립보드 복사 BUTTON.setOnClickListener { clipboard.setPrimaryClip(clip) Toast.makeText(this, "클립보드에 복사되었습니다.", Toast.LENGTH_SHORT).show() }
val dec = DecimalFormat("#,###") dec.format(123123) // 123,123 참고 [Kotlin] 코틀린 DecimalFormat / 천단위 콤마, 소숫점 넣기 [Kotlin] 코틀린 DecimalFormat / 천단위 콤마 넣기 val dec = DecimalFormat("#,###") var test = 123456 dec.format(test) // 123,456 소숫점 항상 표시 val dec = DecimalFormat("#,###.00") var test =.. skogkatt.tistory.com
위 버튼을 누르면 수량이 올라가고, 아래 버튼을 누르면 수량이 내려가는 간단한 코드를 작성해봤다. LiveData를 사용하지 않는다면 이런식으로 작성할 것이다. private var count = 1 // button을 누르면 증가 될 숫자 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityEachBinding.inflate(layoutInflater) setContentView(binding.root) binding.ivQuantityUp.setOnClickListener { binding.tvQuantity.text = (++count).toString() } b..
View Binding이란? Kotlin의 장점중 하나는 findViewById를 쓰지 않아도 되는 점이다. kotlin extension을 깔면 바로 접근가능했다. 그러나 코틀린 익스텐션이 deprecated됐고, 안드로이드에서도 뷰 바인딩 사용을 권장하기 때문에 공부해보려 한다. https://developer.android.com/topic/libraries/view-binding 뷰 결합 | Android 개발자 | Android Developers 뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 developer.android.com 뷰바인딩은 뷰와 상호..
Open Class can be inherited 자바와 다르게 클래스의 상속이 불가능한게 default인 코틀린에서는 class 앞에 open을 달아줘야 상속이 가능해진다. Abstract Class must be inherited, cannot be initiated 상속이 가능한 open클래스와 다르게 추상클래스는 상속이 필수적이다. 즉 얘 자체로 객체를 만들어서 쓰기 위함이 아니라 상속을 위한 클래스. What is the difference between open class and abstract class? abstract class ServerMock(param: String) { protected var someVar = params + "123" fun justMyVar() = someV..
문제 ArrayList를 순회하며 아이템을 삭제하던 중 ConcurrentModificationException 에러가 났다. for (each in a){ if (each.username == b.username){ a.remove(each) } } 이런 식으로 ArrayList인 a를 순회하며 b와 같은지 확인하고(username은 unique함) 같을 경우 삭제하는 코드를 짰는데, 하나의 항목을 삭제하고 나면 순회하는 중인 리스트에 영향을 주기 때문에 에러가 났다. 해결 방법 for (each in a){ if (each.username == b.username){ a.remove(each) break // 여기서 멈추기 } } break을 달아줘서 remove()로 리스트에 modification..
- Total
- Today
- Yesterday
- 파이썬 최대공약수
- 코틀린 바텀네비게이션
- 투포인터 알고리즘
- flutter simultor
- 안드로이드 카카오톡으로 로그인
- 카카오톡으로 로그인 오류
- 시뮬레이터 키보드
- 백준 1644
- 카카오 기출
- 코틀린 리스트뷰
- 프로그래머스
- 코틀린
- 백준
- 안드로이드 키해시
- TextFormField keyboard
- 코틀린 데이터바인딩
- 투포인터 알고리즘 파이썬
- 백준 2003
- counting sort
- Kotlin
- 안드로이드
- 백준알고리즘
- 데이터바인딩 뷰바인딩 차이
- 소수 구하기 파이썬
- 백준 1806
- kotlin fragment
- 카카오 키해시
- 코틀린 뷰바인딩
- 전화번호목록 파이썬
- 코틀린 뷰페이저
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |