본문 바로가기

개발84

android.view.WindowLeaked:[액티비티 경로] has leaked window [액티비티 이름] that was originally added here 액티비티에서 다이얼로그 창을 열어놓고, 해당 다이얼로그 dismiss()로 삭제하지 않고, 액티비티를 종료하면 발생한다. ondestroy()를 오버라이드하여 해당 다이얼로그를 dismiss() 해주면 발생하지 않는다. 2024. 1. 18.
TIL : 프래그먼트에서 액티비티로 데이터 전해주기 각각의 프로젝트들은 다양한 방법으로 데이터를 전해줄 것이다. 내 경우엔 메인 액티비티 안에 프래그먼트가 있고, 이 프래그먼트 안에서 메인 액티비티가 아닌 다른 액티비티로 정보를 전해줘야 했다. 학원에서 준 예제를 잘못 이해해서 헤맸었기 때문에 같은 실수를 방지하고자 정리해놓는다. 우선 나는 프래그먼트에서 다른 액티비티로 바로 전해주는 줄 알았다. 하지만 그게 아니였다. 메인 액티비티를 거친 뒤에 메인 액티비티에서 다른 액티비티로 전해주는 것이다. 프래그먼트 interface FragmentDataListener { fun onDataReceived(data: Member) } class MyContactsFragment : Fragment() { private var _binding: FragmentMy.. 2024. 1. 17.
TIL 코틀린 : sync project with gradle files, 클래스 순환 참조, RGB 투명도 주기 sync project with gradle files git pull로 땡겨오면 sync project with gradle files 을 눌러주자....아니면 클린 프로젝트나.... 리빌드 프로젝트를.... 방금 전까지 잘 되던게 git pull 하자마자 parcelable을 읽지못하더라. gradle도 바뀐거 없는데 왜 안되지 했는데 그냥 싱크가 안맞아서 그런 것이였다. 클래스 순환 참조 클래스를 만드는데 아래와 같은 상황이 되었다. @Parcelize data class Group( var groupImg : Int, var groupName : String, var groupDesc: String, var members: ArrayList, var posts : ArrayList ) : Parc.. 2024. 1. 16.
안드로이드 코틀린 : fatal: refusing to merge unrelated histories, github권한 설정(커밋안됨,The requested URL returned error: 403) fatal: refusing to merge unrelated histories git push를 하려는데 refusing to merge unrelated histories 이라는 오류가 뜨면서 push가 되지 않았다. 상황은 깃허브 저장소에 로컬 저장소에 있던 프로젝트를 푸쉬하려니까 떴다. 이런 경우엔 아래 코드를 입력해주면 pull을 실행할 수 있다. it pull origin 브런치명 --allow-unrelated-histories 원인은 기록상 아무런 관련이 없는 코드를 푸쉬하려고 해서 거부하는 것이라고 한다. --allow-unrelated-histories 를 입력하여 먼저 pull 해온 뒤에 push를 하니 문제없이 잘 작동했다. github권한 설정 부트캠프에서 처음 팀장을 하는데 조원.. 2024. 1. 15.
TIL : BottomNavigationView 구현 바텀 네비게이션을 뷰라는 하단메뉴가 이미 있다고 한다. 미리 구현되어 있는 게 참 많은 거 같다. 우선 메뉴를 구현해주자 res/menu/bottom_menu.xml을 만들어주었다. 경로를 꼭 지켜줘야한다. 메뉴를 클릭하면 글자색과 아이콘 색이 바뀌게 하고 싶어서 스타일도 만들어주었다. 해당 파일은 res/color/bottom_menu_style.xml이다. 뒤에 파일이름은 맘대로 적어도 상관없지만 res/color는 반드시 지켜줘야한다. 적용될 화면에다가 배치할 차례다. res/layout/activity_home.xml이라 만들고 배치하였다. //여기다가 프래그먼트도 구현할거다. //바텀네비게이션뷰 com.google.android.material.bottomnavigation.BottomNavig.. 2024. 1. 12.
TIL : 맨 위로 가기 버튼 만들기(floating button) 맨 위에 있으면 fade out 효과가 적용되면서 버튼이 사라지고 맨 위가 아니면 fade in이 적용되면서 버튼이 나타나는 것을 구현하는 기능을 구현하라는 선택과제 주어졌다. 사실 안해도 상관없지만 나의 도전욕구를 자극해서 해보았다. 위에 사진처럼 나오게 하며 되는데... 여느 앱을 들여다보면 다 있는 정말 일반적인 기능이다. 코드 //..... xml을 만들고... private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } private lateinit var fadeInAnim :Animation private lateinit var fadeOutAnim :Animation //.... fadeInAnim = Animati.. 2024. 1. 11.
안드로이드 코틀린 recyclerview 만들기 이전 글에서 리샤이클러 뷰의 개념에 대해서 설명했었는데 이제 구현해볼 차례다. 원래는 그 날 다 쓸까 했었는데 글이 너무 길어질거 같아서 나눴다. 아래 코드는 부트캠프 과제로 했던 코드 중 일부이다. activity_main.xml main_list_item.xml 이 레이아웃이 리사이클러 뷰에 뜰 것이다. 값을 바꿔줘야하는 뷰에는 아이디를 설정해준다. 그래야 동적으로 바꿔줄 수 있다. Product.kt package com.android.applemarket import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class Product ( var pnum :Int , //번호 var imgsrc : Int , /.. 2024. 1. 10.
코틀린 scrollView, recyclerView 스크롤 맨 위로 이동 둘 다 똑같이 올린다는 행동은 똑같은데 방법이 다르다. scrollview의 경우 binding.scrollView.fullScroll(0) recyclerView의 경우 //부드럽게 올라감 binding.recyclerView.smoothScrollToPosition(0) //바로 올라감 binding.recyclerView.scrollToPosition(0) 2024. 1. 9.
KPT? Keep, Problem, Try 간단한 팀프로젝트 후, kpt라는 것을 작성했다. 이런 정리방법이 있다는 것을 처음 알았고 다른 사람들의 생각까지 참 직관적으로 불 수 있다는 점이 인상적이였다. 아래는 조원들과 상의하여 도출해낸 결론이다. Keep : 만족했던 점, 다음 프로젝트에서도 유지했으면 하는 점. 문제가 생겼을 때 지속적으로 대화를 하면서 풀어가는 과정을 유지 했으면 좋겠다. 하나의 기능을 여러명의 시점으로 보고 다양한 방법을 공유하는 방법을 유지하는 것이 좋다. 정기 및 수시로 코드 리뷰를 하며 진행 상황을 공유하며 중간 점검하는 방법을 유지하면 좋겠다. 이번 팀 프로젝트 경험을 토대로 다음에 있을 프로젝트에 경험을 녹여 더 매끄럽게 진행하면 좋겠다. 각자 맡은 역할을 책임지고 수행하려는 태도를 계속 유지한다. 사소한 질문도.. 2024. 1. 8.