상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
도토리는 어떤 방식으로 가공될 수 있는지 궁금합니다.
그린망고와 함께 아이와 만들 수 있는 요리는 무엇인가요?
생태계교란종의 생태적적합도란 무엇인가요?
요양원에 페트가 가능한가요?
초콜릿을 주제로 한 예술 작품은 어떤 것이 있나요?
장미를 소재로 한 아트워크는 어떤 것이 있나요?
세하두(Cerrado) 생태계가 중요한 이유는 무엇인가요?
세하두(Cerrado) 지역의 전통식 요리는 어떤 것이 있나요?
가장 인기 있는 선글라스 브랜드는 어떤 곳들이 있나요?
퇴직연금 외에 어떤 종류의 퇴직금이 있나요?
퇴직연금의 이전은 어떻게 이루어지나요?
퇴직연금의 추가 납입은 어떻게 이루어지나요?
Previous
Next
수정하기 - ViewPager에서 Fragment의 상태를 어떻게 유지할 수 있나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
ViewPager에서 Fragment의 상태를 유지하는 것은 사용자 경험을 개선하고 애플리케이션의 성능을 최적화하는 데 매우 중요합니다. Fragment의 상태를 효과적으로 유지하는 몇 가지 방법을 소개합니다. 1. Fragment Lifecycle 이해하기 Fragment는 다양한 생명주기 메서드를 가지므로, 적절한 시점에 상태를 저장하고 복원하는 것이 중요합니다. `onSaveInstanceState(Bundle outState)` 메서드를 사용하여 Fragment가 소멸될 때 상태를 저장하고, `onCreateView()` 또는 `onViewCreated()` 메서드에서 이를 복원할 수 있습니다. 2. Fragment에서 상태 저장 Fragment 내부에서 View의 상태를 저장하려면 `onSaveInstanceState()`를 사용하세요. 예를 들어, EditText의 내용을 저장하고 복원하는 코드는 다음과 같습니다. ```kotlin override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) outState.putString("editTextValue", editText.text.toString()) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) if (savedInstanceState != null) { val value = savedInstanceState.getString("editTextValue") editText.setText(value) } } ``` 3. ViewPager의 setOffscreenPageLimit 활용하기 ViewPager의 `setOffscreenPageLimit(int limit)` 메서드를 사용하여 메모리에 유지할 Fragment의 수를 설정할 수 있습니다. 기본값은 1로, 이는 현재 페이지와 그 인접한 페이지의 Fragment만 메모리에 유지하게 됩니다. 필요한 경우 이 값을 늘려서 여러 Fragment를 메모리에 유지할 수 있습니다. ```kotlin viewPager.setOffscreenPageLimit(3) // 현재 페이지와 양쪽 3개 페이지의 Fragment를 메모리에 유지 ``` 4. FragmentStatePagerAdapter 또는 FragmentStateAdapter 사용하기 Fragment의 상태를 더 효과적으로 관리하려면 `FragmentStatePagerAdapter` 또는 `FragmentStateAdapter`를 사용하세요. 이 어댑터는 Fragment의 상태를 자동으로 관리하며, 필요하지 않은 Fragment는 메모리에서 해제합니다. Fragment의 메모리 사용을 최소화하면서 상태를 유지할 수 있습니다. ```kotlin class MyFragmentPagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) { override fun getItem(position: Int): Fragment { return MyFragment.newInstance(position) } override fun getCount(): Int { return NUM_PAGES } } ``` 5. <a href='https://sangseek.com/sangseeks/ViewModel/ko'>ViewModel</a> 사용하기 Fragment와 View의 상태를 Fragment의 생명주기와 분리하여 관리하려면 `ViewModel`을 사용하는 것도 좋은 방법입니다. ViewModel은 Fragment가 소멸되더라도 데이터를 유지할 수 있습니다. 예를 들어, Fragment와 ViewModel을 연결하여 상태를 관리할 수 있습니다. ```kotlin class MyFragment : Fragment() { private lateinit var viewModel: MyViewModel override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // ... } } ``` 결론 Fragment의 상태를 ViewPager에서 유지하기 위해서는 Fragment의 생명주기를 잘 이해하고, 적절한 메서드를 활용하는 것이 중요합니다. 필요한 경우 `ViewModel`을 사용하거나 `FragmentStatePagerAdapter`를 활용하여 보다 효과적으로 상태를 관리할 수 있습니다. 이러한 기법을 적절히 사용하면 사용자 경험을 크게 향상시킬 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기