백 스택에서 조각을 꺼내는 방법
조각 Cf를 호출하는 조각 Bf를 호출하는 활동 A가 있습니다. 사용자가 다시 탐색 할 수 있도록 Cf가 호출 될 때 Bf를 백 스택에 배치하고 싶습니다. 그러나 Cf에서 특정 버튼을 누르면 Bf를 백 스택에서 제거하고 싶습니다. 이것이 가능한가?
popBackStack () 함수가 있음을 알았습니다. 그러나 이것이 어떻게 작동하는지 약간 혼란 스럽습니다. 이 기능을 사용해도 안전합니까? 다른 응용 프로그램의 활동이 백 스택의 Bf 뒤에 삽입 될 가능성이 있습니까?
또한 백 스택에서 조각의 savedInstanceState를 변경할 수있는 방법이 있습니까?
에뮬레이터를 사용하여 백 스택에서 강력한 테스트를 수행하는 방법을 알 수 없습니다.
조각을 이름으로 팝할 수 있습니다. 백 스택에 조각을 추가하는 동안 이름 만 지정하면됩니다.
fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");
그런 다음 Fragment_C에서 ie ..라는 이름을 사용하여 백 스택을 팝 fragB하고 다음을 포함합니다.POP_BACK_STACK_INCLUSIVE
someButtonInC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getActivity()
.getSupportFragmentManager();
fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
});
BackStack에서 조각을 팝하는 세 가지 방법
이 줄을 추가하기 만하면됩니다.
1. getActivity().getSupportFragmentManager().popBackStack();
2. getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
3. getActivity().getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
백 스택에서 조각을 꺼내는 가장 쉬운 방법
먼저 "Later Transaction"과 같이 이름을 추가 할 때 container_view 조각을 대체합니다.
getSupportFragmentManager().beginTransaction().replace(R.id.container_view,
profileFragment, "Profile").addToBackStack("Later Transaction").commit();
그런 다음 뒤로 버튼을 누르면 나중에 트랜잭션 이름을 사용하여 백 스택을 팝합니다.
int count = getSupportFragmentManager().getBackStackEntryCount();
if(count > 1) {
getSupportFragmentManager().popBackStack("Later Transaction",
FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
DialogUtils.show(HomeActivity.this,
getString(R.string.exit_app_message), getString(R.string.alert),
"Yes","No", new DialogUtils.ActionListner() {
@Override
public void onPositiveAction() {
finish();
}
@Override
public void onNegativeAction() {
}
});
}
참고 URL : https://stackoverflow.com/questions/14971780/how-to-pop-fragment-off-backstack
'Program Club' 카테고리의 다른 글
| Scala에서 어떻게 배열을 패턴 화합니까? (0) | 2020.11.17 |
|---|---|
| MySql은 성능을 봅니다. (0) | 2020.11.17 |
| Angular에서 이벤트를 어떻게 테스트 할 수 있습니까? (0) | 2020.11.17 |
| Elasticsearch에서 여과기는 무엇을 의미합니까? (0) | 2020.11.17 |
| PostgreSQL에서 'user'라는 데이터베이스 테이블을 만들 수 없습니다. (0) | 2020.11.17 |