안녕하세요
현재 Fragment를 이용해서 탭화면을 구성하였는데
탭버튼을 눌러서 Fragment 이동시 화면이나 Data를 유지하고 싶습니다..
(예를들어 A Fragment가 Recyclerview로 이루워졌는데 list를 추가하거나 스크롤이 가운데 있을때 B버튼을 눌러 B Fragment로 이동했다가 A Fragment로 다시 돌아왔을시 그 화면이나 데이터를 유지하고 싶습니다.. 현재는 새로 다시 화면이 뿌려져서 add한 데이터도 사라집니다.. sqlite로 insert해서 다시 뿌려주는방식이 가능하긴 하지만 기획상 db저장은 이때 해주지 않을계획이라)
그래서 BackStack을 이용해야 할 거 같은데 어떤식으로 접근해야 할지 모르겠습니다..
일단 현재 코드는 이런식으로 이루어져있습니다(대부분 이름변경하고 했지만)
case A탭 눌렀을때 :
replaceA();
break;
case B탭 눌렀을때 :
replaceB();
break;
case C탭 눌렀을때 :
replaceC();
break;
private void replaceA()
{
A a = new A();
Fragment fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.교체할 영역, a);
fragmentTransaction.commit();
}
private void replaceB()
{
B b = new B();
Fragment fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.교체할 영역, b);
fragmentTransaction.commit();
}
private void replaceC()
{
C c = new C();
Fragment fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.교체할 영역, c);
fragmentTransaction.commit();
}
BackStack을 넣기위해 replace와 commit 사이에 .addToBackStack을 넣어보기도 했는데
백버튼으로 해서 fragmentManager.popBackStack();까진 되는데 탭버튼으로 Fragment 교체할때는
생각한대로 되질 않습니다..
.addToBackStack("A"), ("B"), ("C") 이런식으로 tag를 남겨서 버튼을 눌렀을때 불러와야할것 같은데
어떤식으로 코딩해야할지 감이 안옵니다..
Stack 무한대로 쌓이는걸 방지하기 위해서 getBackStackEntryCount로 갯수확인하면서 3개만 유지해야할
것같은데 이부분도 감이 잘 안오고..
어떤식으로 접근해야하는지 힌트라도 주시면 감사하겠습니다..