전체 글 (91) 썸네일형 리스트형 TIL 43일차 SharedPreferences프로그램의 설정 정보 (사용자의 옵션 선택 사항 이나 프로그램의 구성 정보)를 영구적으로 저장하는 용도로 사용. XML 포맷의 텍스트 파일에 키 - 값 세트로 정보를 저장한다getSharedPreferencesgetSharedPreferences(name, mode)여러개의 Shared Preference파일들을 사용하는 경우 사용한다name : 프레퍼런스 데이터를 저장할 XML 파일의 이름mode : 파일의 공유 모드 - MODE_PRIVATE: 생성된 XML 파일은 호출한 애플리케이션 내에서만 읽기 쓰기가 가능val sharedPref = activity?.getSharedPreferences( getString(R.string.preference_file_.. TIL 42일차 과제 피드백 레이아웃 코드를 적을 때 가독성과 유지보수를 위해 레이아웃으로 한번 감싸주는 것이 좋을것이다 버튼의 크기가 너무 작을 때 터치 편의성을 위해 레이아웃으로 한번 감싸주면 터치영역이 커져서 좋을것이다 텍스트에 밑출질때 string파일에서 태그를 주는 방법이 가장 간편하다 (다른 방법이 틀린건 아님) 데이터 클래스를 만들 때 좋아요를 눌렀는지 안눌렀는지 알 수 있는 Boolean타입의 데이터가 하나 있어야 마지막 과제를 할 수 있다 데이터를 전달할 때 키값을 많이 쓰는데, 키값의 개수가 많아지면 헷갈릴 수 있어서 키값을 오브젝트 파일로 따로 빼두면 편리하다 (실무에서 사용하는 방법) fadein, fadeout 애니메이션 코드 작성할때 버튼의 visibility 상태 설정과 순서를 헷갈리지 않도록.. TIL 41일차 MVC Activity에 Data List를 세팅 및 전달 해주고, UI Component에 값을 뿌려줬던 방식 MVC의 단점 복잡한 앱일수록 Activity가 수행하는 기능이 많아진다 수행하는 기능이 많아질수록 코드 수 증가 > 내가 찾고자 하는 코드를 찾기 어려움 > 유지보수 어려움 현업 시 하나의 기능을 추가 및 수정할 때 코드가 연쇄적으로 연결되어 있어 전체를 고쳐야하는 상황이 발생할 수 있다 MVVM View Activity, Fragment, .xml와 같이 화면에 보여지는 UI 텍스트 입력, 버튼 터치 등과 같은 UI Event, Action 받음 UI 관련 로직 수행 ViewModel View에 필요한 데이터를 Model로부터 가져와 가공 및 변환 UI와 관련된 데이터 처리 View가 Ob.. TIL 40일차 멀티뷰 타입 리사이클러뷰 피드백 받고 수정한 코드 정리 activity_main.xml activity_detail.xml card1_recyclerview.xml (card2_recyclerview, card3_recyclerview 색만 다르고 나머지 동일) MyCard.kt package com.android.standardhomework3 import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class MyCard( val name: String, val number: String, val expiration: String, val price: String ) : Parcelable DataList.kt pa.. TIL 39일차 Multi View Type RecyclerView 한 개의 리사이클러뷰 안에서 여러 개의 View 형태를 가지는 형태이다 멀티뷰 타입 리사이클러뷰 사용 예제 activity_main.xml activity_detail.xml CardData.kt (interface) package com.android.standardhomework3 interface CardData { val name: String val number: String val expiration: String val price: String } MyCard.kt (data class) package com.android.standardhomework3 data class MyCard1(override val name: String, ov.. TIL 38일차 프래그먼트 액티비티 위에서 동작하는 인터페이스 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있음 프래그먼트 사용 예제 프래그먼트 파일 생성 xml 파일 정의 MainActivity에 Fragment 추가하기 프래그먼트의 데이터 전달 Activity > Fragment 데이터 전달 보내는 코드 binding.run { fragment1Btn.setOnClickListener{ // [1] Activity -> FirstFragment val dataToSend = "Hello First Fragment! \n From Activity" val fragment = FirstFragment.newInstance(dataToSend) setFragment(fragment) } fragment2Btn.set.. TIL 37일차 뷰 바인딩(ViewBinding) 뷰 바인딩의 특징 뷰와 상호작용하는 코드를 쉽게 작성할 수 있다 모듈에서 사용 설정된 뷰 바인딩은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성한다 바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함된다 대부분의 경우 뷰 바인딩이 findViewById를 대체한다 findViewById와의 차이점 Null 안정성 뷰 바인딩을 사용하면, 앱이 레이아웃의 각 뷰를 직접 참조할 수 있게 해주는 안전한 코드를 자동으로 생성한다. 이것은 뷰를 사용할 때 'null' 값으로 인한 오류, 즉 뷰가 아직 화면에 나타나지 않았는데 그 뷰를 사용하려고 할 때 생길 수 있는 문제들을 예방한다 예를 들어, 만약 레이아웃에 버튼이 있어야 하는데.. TIL 36일차 Unresolved reference: R 에러 해결 방안 몇가지 git branch에서 git clone으로 코드를 가져올 때 생긴 문제이다. 몇몇 부분이 사소하게 에러가 났고 그중 Unresolved reference: R 에러가 가장 먼저 해결해야되는 에러였다. 다음은 내가 시도한 여러가지 방법들이다 1) build.gradle 파일에서 Sync now 누르기 Syne Now가 아니더라도 어쨌든 변경 사항이 적용이 안됐을 수 있기 때문에 무언가 시스템이 알려주면 꼭 적용해보도록 하자 2) Tools > SDK Manager에서 Android Emulator 삭제 후 다시 설치하기 해당 방법은 에뮬레이터가 작동하지 않는 문제시에도 사용할 수 있다. 재설치 하는 김에 Android SDK Platfor.. 이전 1 2 3 4 5 6 7 8 ··· 12 다음