티스토리 뷰

Android

Fragment 생애주기, 전환

os94 2019. 9. 13. 16:06

Fragment LifeCycle


replace, addToBackStack

getFragmentManager()
  .beginTransaction()
  .replace(R.id.container, new fragment1) // 새로운 fragment1을 생성하며 전환
  .addToBackStack(null) //추가하면, Back버튼을 눌렀을때 이전Fragment로 복귀
  .commit();

(new fragment1 대신 이전에 미리 Fragment생성후 Bundle을 담아, 데이터를 함께 전송할수도있음)

remove, popBackStack

getFragmentManager()
  .beginTransaction()
  .remove(currentFragment.this) // 현재Fragment를 종료
  .commit();

getFragmentManager()
  .popBackStack(); // 이전Fragment로 복귀

Fragment Refresh : detach&attach

getFragmentManager()
   .beginTransaction()
   .detach( --fragment-- )
   .attach( --fragment-- )
   .commit();

in my Code)

getSupportFragmentManager().beginTransaction().replace(R.id.post_container, fragment, "fragmentTag").commit();
AppCompatActivity activity = (AppCompatActivity) view.getContext();
Fragment fragment2 = activity.getSupportFragmentManager().findFragmentByTag("fragmentTag");
activity.getSupportFragmentManager().beginTransaction().detach(fragment2).attach(fragment2).commit();
  • fragment 생성시 "unique tag"를 추가필드로 줘서 fragment tag 생성.
  • fragment2를 findFragmentByTag로 찾아서, fragment2가 아닌 다른곳에서도 fragment2를 refresh 가능.
  • 위의 refresh코드 위치는 fragment를 포함한 activity의 Adapter안이라서, 'activity'를 별도로 생성한후 찾아서 fragment와 연결시켰음.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함