일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Room 데이터베이스 업데이트
- 코틀린 트리거 버튼
- json 저장
- TwomonUSB
- 데이터바인딩
- 토글 험수
- livedata
- apk이름변경
- 코틀린 이미지저장 #파일저장
- withContext
- TowmonUSB 연결오류
- mutable
- 안드로이드 스튜디오 애뮬레이터
- compse state
- 라이브데이터 postValue
- compse collectAsState
- Today
- Total
목록안드로이드 개발/개발팁 (19)
EnjoyLife
버튼 xml android:onClick="@{()->learnViewModel.onHideDeleteEvent(!learnViewModel.isDelete)}" 뷰모델 var isDelete = MutableLiveData() fun onHideDeleteEvent(isClick:Boolean) { isDelete.value = isClick } 액티비티 learnViewModel.isDelete.observe(this){ Timber.e("isDelete = $it") } 참쉽죠~
퍼옴 https://comeths.tistory.com/133 Error while waiting for device: Timed out after 300seconds waiting for emulator to come online. Android Studio 우측 상단의 AVD Manager를 누른 후 에러가 발생한 에뮬레이터를 우클릭한 후 Wipe Data를 선택한다. 해당 에뮬레이터를 다시 실행해 보면 에러가 발생하지 않는다. comeths.tistory.com 에러가 발생한 에뮬레이터를 우클릭한 후 Wipe Data를 선택한다.
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } //아래 코드를 추가한다. applicationVariants.all { variant -> variant.outputs.all { outputFileName = parent.project.getName() +"_V${variant.versionName}_${new Date().format('YYMMdd')}.apk" } } }
아래 링크 참고. 퍼옴 https://medium.com/@nayantala259/android-how-to-read-and-write-parse-data-from-json-file-226f821e957a Android — How to Read and Write (Parse) data from JSON File ? How to Insert, Update and Delete the data available in JSON File in Android ? medium.com
아래 블로그를 참고하면 됩니다. 이보다 더 자세한 설명은 없더라구요. https://mparchive.tistory.com/176 [안드로이드] Room 데이터베이스의 테이블 등을 업데이트 할 시, Migration 옵션을 필히 집어넣자. 기존 프로젝트의 로컬 DB 테이블에 컬럼을 삽입해야하는 요구사항이 생겼는데, 이를 진행하면서 필수적이었던 Migration 과정을 리뷰해두고자 한다. Room DB를 안드로이드에 설정할 때에는 @Database mparchive.tistory.com
동일한 결과가 나오지만 함수의 마지막 인자로 람다식을 적용한 코드가 더 간결함을 느낄수 있다. 람다코드의 매력은 함수의 마지막 인자가 람다식이면 중괄호{ } 로 표현하게 돼 소스가 간결해진다. 반환형이 Unit 으로 한 이유는 함수를 호출하기 위함이다. 반환값이 있으면 이방법을 쓸 이유가 없다. 일반코드 fun printNumbers(numbers: List) { for (number in numbers) { println(number) } } fun main() { val numbers = listOf(1, 2, 3) printNumbers(numbers) } 람다코드 fun printNumbers(numbers: List, action: (Int) -> Unit) { for (number in num..
우선 애뮬레이터 실행시 오류가 나면 아래 경로가 가서 로그기록을 보자 C:\Users\admin\AppData\Local\Google\AndroidStudio 버전\ 에서 idea.log 를 찾아서 "emulator" 검색하면 원인이 나온다. 저같은 경우 아래와 같은 코드가 나옴. "PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT" 역시 스택오버플로우다 ! 환경변수에 아래 형광펜을 그냥 믿고 따라 하자. 형광펜의 sdk 는 반드시 본인이 설정한 경로에 두자 https://stackoverflow.com/questions/41274830/panic-cannot-find-avd-system-path-please-define-android..
코틀린 버전 private fun isRooted(): Boolean { val buildTags = android.os.Build.TAGS if (buildTags != null && buildTags.contains("test-keys")) { return true } try { val file = File("/system/app/Superuser.apk") if (file.exists()) { return true } } catch (e: Exception) { } val rootBinaryPaths = arrayOf( "/sbin/su", "/system/bin/su", "/system/xbin/su", "/system/sd/xbin/su", "/system/bin/failsafe/su", "/d..