Android51 [Android] Fragment에서 add()와 replace() 차이점 배경 보통 fragment를 사용할 때 replace를 주로 사용해왔는데 add()와 replace()가 과연 어떤 차이점이 있는지 체크해보기로 했습니다. add() 와 replace()의 차이 add()는 기존의 프래그먼트 위에 추가하는 것이고 replace()는 이전 프래그먼트들을 제거한 후에 새로운 프래그먼트를 추가한다는 차이점이 있습니다. 기존의 fragment 설정 Activity: onCreate() -> Fragment: onAttch - onCreate - onCreateView - onViewCreated - onViewStateRestored - onStart -> Activity: onStart - onResume A fragment에서 B fragment로 replace()할 경우 .. 2022. 9. 27. [Android] Fragment 생명주기 Fragment란? 프래그먼트란 액티비티 내에 배치되어 사용자 인터페이스를 구성하는 안드로이드 구성요소 중 하나입니다. 액티비티 내의 일부 영역을 차지하여 화면을 구성할 수 있으며 독립적으로 동작할 수 있어 매우 유용합니다. CREATED: Fragment의 생명주기가 CREATED된 상태라면 이미 onAttach()를 통해 FragmentManager에 추가된 상태입니다. 이 상태에서 데이터를 초기화,복구하거나 저장된 상태를 불러옵니다. STARTED: Fragment 안의 View들이 표시되지만 '포커스'가 없으므로 사용자 입력에 응답할 수 없습니다. RESUMED: Activity와 마찬가지로 사용자와 Fragment가 상호작용하는 단계입니다. STARTED: Fragment의 onPause()를 .. 2022. 9. 27. [Android] ViewPager2 - onAttachedToRecyclerView Error 배경 Fragment에 ViewPager2를 붙이고 다른화면으로 전환 후에 다시 돌아오면 에러가 발생하면서 앱이 터지는 현상을 발견했습니다. 에러 내용 java.lang.IllegalArgumentException at androidx.core.util.Preconditions.checkArgument(Preconditions.java:38) at androidx.viewpager2.adapter.FragmentStateAdapter.onAttachedToRecyclerView(FragmentStateAdapter.java:132) at androidx.recyclerview.widget.RecyclerView.setAdapterInternal(RecyclerView.java:1243) at androi.. 2022. 9. 21. [Android] 멀티 Module에서 발생하는 google-services.json is missing 오류 저 같은 경우 라이브러리에서 firebase 라이브러리를 사용하려고 할 때 plugins 쪽에 아래 코드를 추가한 것이 문제였습니다. app 하위 모듈에서 firebase 라이브러리를 사용하고 싶다면 플러그인에 추가하지 않고 dependencies에만 추가해주시면 됩니다. id("com.google.gms.google-services") https://stackoverflow.com/questions/41913984/use-external-google-services-json-file-in-library/41920680#41920680 Use external google-services.json file in library I'm sharing a single login module across my a.. 2022. 9. 9. [Android] 안드로이드에서 유튜브 임베디드 적용하기 배경 이번에 프로젝트를 진행하면서 사용자들이 관심있어할만한 주제의 유튜브 영상들을 제공하고자 했습니다. 따라서 안드로이드 앱에서 유튜브를 임베디드 하는 방법을 공부해봤습니다! 설명에 앞서.. 저는 이번에 유튜브 developer 사이트를 참고하여 적용해볼까 고민을 했지만 생각보다 자세히 나와있지 않았습니다. https://developers.google.com/youtube/android/player 그래서 저는 PierfrancescoSoffritti가 만든 android-youtube-player 라이브러리를 사용했습니다. 구현 1. 우선 build.gradle(App)에 implementation을 추가해줍니다. implementation 'com.pierfrancescosoffritti.andro.. 2022. 8. 31. [Android] 4대 컴포넌트 Android 앱은 컴포넌트로 구성되어 있으며 구성하는 구성요소로 Activity, Service, Content Provider, Broadcast Receiver가 있습니다. 이를 4대 컴포넌트라 부릅니다. 각 컴포넌트들은 하나의 독립된 형태로 존재하며, 정해진 역할을 수행한다. 컴포넌트들 간의 상호 통신은 Intent라는 일종의 메시지 객체를 사용하여 상호 통신을 진행합니다. Activity 사용자가 애플리케이션과 상호작용하는 UI (사용자 인터페이스 화면)을 의미합니다. 안드로이드 애플리케이션은 하나 이상의 액티비티를 포함하고 있으며 액티비티는 생명주기(Life Cycle) 관련 메서드들을 재정의하여 원하는 기능들을 구현할 수 있습니다. Intent를 통해 다른 애플리케이션의 액티비티를 호출할 수.. 2022. 8. 7. [Android] ScrollView 내 레이아웃 높이 가득 채우기 ScrollView의 속성 중에서 아래를 추가시켜주면 화면이 꽉 차는 것을 볼 수 있습니다! android:fillViewport="true" 2022. 8. 6. [Android] findViewById는 어떻게 동작하는걸까? 배경 binding을 사용하기 이전에 Android에서는 findViewById를 자주 사용해왔습니다. 하지만 findViewById를 반복적으로 호출하게 될 경우 성능 저하가 발생한다고 합니다. 왜 성능저하가 발생하는걸까요? findViewById Activity - findViewById @SuppressWarnings("TypeParameterUnusedInFormals") @Override public T findViewById(@IdRes int id) { return getDelegate().findViewById(id); } Activity의 경우 getDelegate()를 파고 들어가면 AppCompatDelegate를 생성하여 그것에서 findViewById를 실행합니다. // AppCo.. 2022. 8. 6. [Android] Event Bus (greenbot)에 대해 알아보자 배경 저는 이번에 FCM이 날아왔을 때 실시간으로 데이터가 변경되는 화면을 구현해야 했습니다. 처음에는 object 객체에 LiveData를 넣어 구현하였지만 LiveData를 object에 넣어 작업하면 lifecycle 문제가 발생할 것이라고 생각하였습니다. 다른 방식을 찾다보니 Event Bus를 활용하는 것이 좀 더 나은 방식이라고 판단하여 적용하게 되었습니다 설명에 앞서.. Event Bus 라이브러리에는 아래와 같이 2가지가 있습니다. 1. Square사의 Otto (https://github.com/square/otto) 2. greenbot의 EventBus (https://github.com/greenrobot/EventBus) 저는 2번를 사용하여 이것에 대해 정리해보고자 합니다. Ev.. 2022. 7. 29. 이전 1 2 3 4 5 6 다음