개발/Android
-
Android Room Date Type에 대한 에러개발/Android 2023. 6. 9. 15:40
D:\wookhyun\android\compose\udemy\JetNoteApp\app\build\tmp\kapt3\stubs\debug\com\example\jetnoteapp\model\Note.java:19: error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. private final java.util.Date date = null; Room 데이터베이스를 공부하면서 위 에러를 볼 수 있었다. 안드로이드에서 활용할 수 있는 DB인 SQLite는 date 타입이 존재하지 않는다 따라서 어떻게 저장해야 할지 모르는 SQLite는 에러를 내뱉은 것이다. 이를..
-
Room 사용 시 kapt 에러개발/Android 2023. 6. 9. 11:32
android room을 사용하기 위해 implement를 작성하고 나면 다음의 에러를 간혹 볼 수 있다. * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Exception is: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':app'. ... Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method kapt..
-
Material Theme Color System개발/Android 2023. 5. 31. 18:35
안드로이드 그리고 플러터를 공부하면서 MaterialTheme을 자주 접하게 된다. 그리고 기 설정된 색을 주로 사용하면서 Primary onSurface 등 다양한 색 구성을 접하게된다. 막연하게 사용했었지만 그 용도를 정확히 파악하고 제대로된 사용처를 파악하여 완성도 있는 앱을 만들고자 정리해둔다. Primary color Primary Color는 앱의 스크린 그리고 컴포넌트에서 가장 빈번하게 사용하는 색이다 일반적으로 appbar에 색이 primary color가 되는 경우가 많습니다. 그리고 primary color에서 더 어두운 색이 systembar 색으로 결정된다.이를 primary varient라고 합니다. Secondary color secondary color는 앱 내에서 특별히 강조..
-
Android DateFormat개발/Android 2022. 9. 13. 23:31
Date 타입을 가지는 프로퍼티를 쉽게 읽을 수 있도록 포맷팅 하기 data class Crime( val id: UUID, val title: String, val date: Date, val isSolved: Boolean, val requiresPolice: Boolean, ) SimpleDateFormat 클래스도 있지만, DateFormat 클래스를 이용해서도 쉽게 변경할 수 있다. class CrucialCrimeHolder( private val binding: ListItemCrucialCrimeBinding ) : RecyclerView.ViewHolder(binding.root) { fun bind(crime: Crime) { binding.crucialCrimeTitle.text = ..
-
RecyclerView ViewType 분기개발/Android 2022. 9. 12. 16:19
Data 클래스의 한 값을 기준으로 해서 서로 다른 레이아웃으로 분기하는 Adapter class CrimeListAdapter(val crimes: List) : RecyclerView.Adapter() { enum class ViewTypeEnum(val num: Int) { CRUCIAL(1), NORMAL(0) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) val viewHolder: ViewHolder = when(viewType){ 0 -> { val binding = ListItemCrimeBinding..
-
Fragment Container Testing개발/Android 2022. 9. 6. 23:26
Android Programming The Big Nerd Ranch Guide 5th를 학습하며 책에 기재된 Challenge에 대한 답을 기록한다. 문제는 FragmentContainer로 만들어진 Fragment에 대한 테스트 케이스를 작성하는 것. package com.wookhyun.criminalintent import androidx.fragment.app.testing.FragmentScenario import androidx.fragment.app.testing.launchFragmentInContainer import androidx.fragment.app.testing.withFragment import androidx.lifecycle.Lifecycle import androidx...
-
[Android] 프레그먼트 추가 및 삭제(뒤로가기 버튼)개발/Android 2021. 10. 27. 20:04
안드로이드 앱은 보통 하나의 액티비에서 다양한 프레그먼트 들을 쌓거나 삭제하며 사용자에게 정보를 전달한다. 이 과정에서 프레그먼트를 추가하고 뒤로가기 버튼을 누르면 이전의 프레그먼트로 돌아가는 방법을 소개하고자 한다. 위의 그림처럼 쌓여진 프레그먼트를 삭제하고 이전의 프레그먼트로 돌아가는 것이다. 프레그먼트 추가 코드 fun onSomeThingClick(view: View){ // Something을 클릭하면 Fregment를 추가 supportFragmentManager.beginTransaction().add(R.id.fragment_container, someFragment(param)).commit() } 프레그먼트 삭제 코드' override fun onAttach(context: Contex..
-
[Android] 뒤에 있는 프레그먼트 이벤트 작동 안되게 하기개발/Android 2021. 10. 27. 19:51
프레그먼트를 쌓다보면 뒤에 있는 프레그먼트의 이벤트가 작동되어 원하지 않은 동작을 하기도 한다. 이러한 것을 방지하기 위해서 이벤트가 전이(?) 되는것을 막아야한다. (자바스크립트를 예로들면 PreventEvent의 코드를 추가해야한다.) 새로 생긴 (제일 위의 프레그먼트)의 onViewCreated 메소드에서 다음의 코드를 추가해주면 뒤에 있는 프레그먼트 이벤트를 무시할 수 있다. override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) view.setOnTouchListener { v, event -> return@setOnTouchListener tr..