본문 바로가기

개발84

getParcelableExtra is deprecated productInfo = intent.getParcelableExtra("product") 분명 getParcelableExtra 로 불러와야할 거 같은데 getParcelableExtra에 취소선이 그어져 있다. 그리고 똑같은 이름의 메소드가 있는데 매개변수가 하나 더 추가되있다. 아래처럼 쓰면 된다고 한다. 형변환을 하지 않고 매개변수로 넣어주나 보다. 해당 사항은 API 33 이상만 해당되며 33미만은 위에처럼 써주면 된다. productInfo = intent.getParcelableExtra("product",Product::class.java) 왜 이렇게 바꾼지는 모르겠다. 뭐가 더 나으니까 바꾼거겠지? 2024. 1. 8.
안드로이드 코틀린 : viewbinding xml 안에 있는 엘리먼트에 접근하려면 findViewById (R.id.textViewId) 와 viewbinding 을 사용할 수 있다. findViewById 은 수동, viewbinding 은 자동 이라고 생각하면 편하다. 둘 다 사용하면 되는거 아니야? 라고 생각할 수 있지만 viewbinding 사용을 권장한다. 왜일까? findViewById는 직접 프로그래머가 지정하는 것이다. 그러다보니 실제 동작과 의도가 다를 경우 예외를 발생시킬 수 있다. 예를 들어 해당 엘리먼트를 찾을 수 없어 null예외가 발생한다거나 예상한 것과 다른 타입이 들어와서 ClassCast 예외를 일으킬 수 있다. 반면 viewbinding은 xml뷰를 객체로 만들어 처리하기 때문에 번거롭게 findViewById 로.. 2024. 1. 5.
안드로이드 코틀린 fragment 프래그먼트란? -> 액티비티 위에서 동작하는 모듈화된 사용자 인터페이스. 액티비티 없이 독립적으로는 사용 불가능. 모듈형이기 때문에 하나의 프래그먼트를 다른 액티비티에서 사용가능하고 하나의 액티비티 안에 다른 프래그먼트를 보여주면서 여러 화면을 보여줄 수 있다. 바텀 네비게이션이 대표적인 프래그먼트의 예시이다. fragment의 생명 주기 1. onAttach() -> 프래그먼트가 액티비티에 연결될 때 호출.이 시점에는 연결되지 않았다. 2. onCreate() -> 프래그먼트 생성. 초기화, 바인딩 수행 3. onCreateView() -> view를 생성하는 단계. 4. onActivityCreated() -> view가 생성되면 호출되고 view를 초기화한다. 5. onStart() -> 필요한 리.. 2024. 1. 4.
안드로이드 코틀린: recyclerview recyclerview를 설명하기 전에 listview와 gridview를 설명하겠다. 이해를 돕기 위한 것도 있고 시기 상으로 이 둘이 먼저 먼저 나왔고 이 둘의 단점을 보완한 것이 recyclerview이다. gridview와 listview는 리스트를 구현할 때 생성과 삭제를 반복하게 된다. 이들 하나하나가 객체라서 객체의 생성과 삭제를 반복하는 것은 성능 상 좋지 않기 때문에 recyclerview가 나왔다. recyclerview 를 한글로 번역하면 재활용뷰라고 할 수 있다. 말 그대로 생성과 삭제를 하지 않고 썼던 것을 변경해서 다시 쓰는 것이다. 그림을 보면 이해가 빠를 것이다. 왼쪽이 gridview와 listview . 오른쪽이 recyclerview 의 작동흐름이다. recyclervi.. 2024. 1. 3.
코틀린 R.drawble 안에 넣어둔 이미지가 인식이 안될 때(R.drawble 이미지 인식) 분명 이전 프로젝트에서 drawble 폴더 안에 이미지를 넣으면 R.drawble.'이미지 이름' 하면 잘만 나왔는데 인식이 안되고 안드로이드에서 제공하는 기본이미지만 나왔다. 왜 그런가 한동안 검색해봤다. 전혀 생각지도 못한 import에 문제가 있었다. import android.R 2024. 1. 3.
코틀린 : copyOfRange(), copyOf() copyOfRange() 리스트에서 () 안에 범위만큼 복사해오는 메소드이다. ( start index, end index )인데 주의할 점은 end index에서 마지막 번호를 포함하지 않는다. 아래 예시를 보자 var citations = intArrayOf(3, 0, 6, 1, 5) var answer = citations.copyOfRange(0,2) println( answer.contentToString() ) // [3, 0] 0부터 2까지인데 결과는 3,0,6 이 아니라 3,0이 출력된다. copyOf() 어레이를 복사한다. var citations = intArrayOf(3, 0, 6, 1, 5) var answer = citations.copyOf() println( answer.con.. 2024. 1. 2.
TIL: apply와 also의 차이점 강사님들이 apply와 also는 매우 유용한 함수에요~ 라고 하지만 둘의 차이점을 잘 몰랐었다. 블로그에 요약되있는 글을 봐도 긴가민가 했는데 팀프로젝트를 하면서 차이점에 대한 느낌이 와서 적는다. apply는 {} 안에서 수행하는 코드가 객체에 영향을 미친다. 그래서 초기화를 할 때나 해당 객체를 동적으로 변경할 때 써주면 이만큼 좋은 메소드가 없다. also는 {} 안에서 어떤 일이 나던 원본 객체에는 영향을 미치지 않는다. 그러니 원본은 보존하면서 비슷한 객체를 만들어야할 때 쓰면 편하다. 핵심은 이것이다. apply는 {} 안에 코드가 객체에 영향을 준다. also는 {} 안에 코드가 객체에 영향을 안준다. 2023. 12. 28.
TIL: parcelable 액티비티 간에 데이터를 string, int, long 등 다양하게 넘겨줄 수 있지만 객체를 전해줘야할 수도 있다. 그럴 때는 parcelable을 사용하여 준다. 비슷한 역할을 하는 serializable 도 있다. 성능을 비교하면 parcelable >>> serializable parcelable이 훨씬 나중에 나왔기 때문에 더 최신의 기술이고 그만큼 성능 역시 좋다. 하지만 serializable을 쓴다고 한다. 왜일까? parcelable 은 추상메소드이므로 하나하나 다 오버라이드를 해줘야한다. import android.os.Parcel import android.os.Parcelable class MyParcelableObject(val name: String, val age: Int) : .. 2023. 12. 27.
TIL: 안드로이드 글자수 초과시 말줄임 ... 으로 표시, 라인 수 제한, fatal: unable to access [http주소] The requested URL returned error: 403 텍스트뷰가 너무 길어지면 짤라야할 때가 있다. 하지만 안드로이드는 텍스트가 길어지면 자동으로 줄바꿈하면서 내용을 이어간다. 레이아웃을 위해 텍스트를 제한할 때 쓸 수 있는 속성이다. 해당 코드를 실행하면 텍스트는 두줄까지 나오고 2번째 줄 끝에서 ...으로 말줄임이 될 것이다. 팀프로젝트를 진행하면서 클론을 마치고 푸쉬를 하려는데 아래의 메시지가 뜨면서 푸쉬가 되지 않았다. fatal: unable to access 'https://github.com/dlho1222/Sparta-Week5-Team--SNS.git/': The requested URL returned error: 403 구글을 뒤져가면서 방법들을 찾아보았지만 나랑은 상관없는 것들이였다. 알고보니 답은 정말정말 간단한 것이였다. git 초.. 2023. 12. 26.