2016-10-14 5 views
0

RelativeLayout 컨테이너의 주요 활동은 FragmentManager을 사용하여 다른 조각을로드하는 것입니다. 두 개의 트랜잭션으로 fragment1과 fragment2를로드한다고 가정 해 보겠습니다. 뒤로 버튼을 누른 경우, fragment1과 fragment2가 모두로드되지 않은 상태로 돌아가고 싶습니다. 이것이 가능한가? 나는 addToBackStack() 메소드에 같은 이름을 사용하려고했습니다Android : 두 개 이상의 조각을 동일한 백 스택 상태에 추가하십시오.

mFragmentManager.beginTransaction().replace(R.id.activity_main, fragment1).addToBackStack("SameState").commit(); 

mFragmentManager.beginTransaction().add(R.id.activity_main, fragment2).addToBackStack("SameState").commit(); 

하지만이 작동하지 않습니다. 뒤로 버튼을 누르면 fragment2가 먼저 사라지고 다시 fragment1을 누르면 사라집니다. 어떠한 제안?

+0

@DeeV이 방법으로 조각 2가 아직 살아 있는지 (렌더링 됨) – revy

+0

죄송합니다. 그것을 뒤쪽 스택에 포함시키지 않습니다. 난 당신이 그것에 대해 갈 필요가있을 수 있습니다 방법을 함께 두 컨테이너에 모두 추가, 다음 두 번째 커밋에 fragment2 숨기기/숨기기를 추가하는 것 같아요. 그런 식으로, "뒤로"를 누르면 양쪽 모두 제거됩니다. – DeeV

답변

0

이 시도 :이 시점에서

mFragmentManager.beginTransaction() 
.replace(R.id.activity_main,fragment1) 
.addToBackStack(null) 
.commit(); 

getSupportFragmentManager().popBackStack(); // Pop the first transaction 
mFragmentManager.beginTransaction() 
.replace(R.id.activity_main,fragment2) 
.addToBackStack(null) 
.commit(); 

, 당신은 다시 버튼을 누르면, 단순히 (fragment2 교체) 마지막 트랜잭션을 되돌아갑니다.

+0

이 시도했지만 애플 리케이션 크래시 ... 그리고 로그에 오류없이 나는 이유를 모르겠다 – revy