삭제 된 항목을 가리킬 수있는 조각 백 스택을 다시 탐색하는 방법을 제대로 파악하려고합니다. 나는 이것이 매우 일반적인 경우라고 추측 하겠지만, 나는 그것을위한 해결책을 찾지 못했다. 그것은 감각에 대한 참조를 제거 할 것삭제 된 항목을 참조하는 백 스택 처리 방법
|-----------------------|----------------------------|--------------------| | Action | Back stack | Location | |-----------------------|----------------------------|--------------------| | View list | | List | | Go to Details(A) | List | Details(A) | | Go up | List -> Details(A) | List | | Go to Details(A) | List -> Details(A) -> List | Details(A) | | Delete A (pops stack) | List -> Details(A) | List | | Go back | List | Details(A) PROBLEM | |-----------------------|----------------------------|--------------------|
:
물론 같은 문제가 항목 B를 포함하지 않고 발생|-----------------------|--------------------------------------------------|--------------------| | Action | Back stack | Location | |-----------------------|--------------------------------------------------|--------------------| | View list | | List | | Go to Details(A) | List | Details(A) | | Go up | List -> Details(A) | List | | Go to Details(B) | List -> Details(A) -> List | Details(B) | | Go up | List -> Details(A) -> List -> Details(B) | List | | Go to Details(A) | List -> Details(A) -> List -> Details(B) -> List | Details(A) | | Delete A (pops stack) | List -> Details(A) -> List -> Details(B) | List | | Go back | List -> Details(A) -> List | Details(B) | | Go back | List -> Details(A) | List | | Go back | List | Details(A) PROBLEM | |-----------------------|--------------------------------------------------|--------------------|
, 그것은 문제가있는 항목이 약간 위로를 스택 될 수 있음을 지적하고 그냥 항목을 삭제할 때 백 스택에서 항목을 삭제했지만 실제로는 백 스택이 어떻게 작동하는지 이해하지 못합니다. 작동하는 것 같다
한 가지 해결 방법은 누락 된 항목에 대한 조각을 만드는 스택을 팝업하는 것입니다,하지만 처음에 누락 된 항목에 대한 조각을 만들려고하지 좋을 것 :
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup,
Bundle savedInstanceState) {
if(item == null) {
getFragmentManager().popBackStack();
return null;
}
...
}
나는이 같은 대부분의 조각을 추가
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, TheFragment.newInstance(type))
.addToBackStack(null)
.commit();
편집 마십시오 NA에 다시 수 없습니다
계층을 아래로 움직이면이 특정 경우의 문제를 피할 수 있지만 해결하려는 일반적인 문제는 다음과 같습니다.
항목에 '다음'옵션이 있고 '항목 관리'보기가 항목을 탐색하는 동안 도달해야합니다.
'항목 관리'에서 돌아가서 이전에 방문한 항목으로 돌아갈 것으로 예상됩니다.
그래서 나는 A -> B -> Manage Items
을 탐색합니다.
'아이템 관리'에서 아이템 A를 삭제하고 뒤로 밀면 아이템 B의 프래그먼트가 나타납니다. 괜찮습니다. 다시 누르면 삭제 된 항목 A를 가리키는 조각이로드되어 DB에서 지금 삭제 된 데이터를로드하려고 할 때 문제가 발생합니다.
는순간에 내가 가진 유일한 해결 방법은 누락 된 항목에 대한 조각을 다시 할 때 onCreateView에서 문제를 감지하고, popBackStack()
목록에서 위로 갈 때 스택에서 하위 조각을 지우는 것이 좋습니다. 조언을 주셔서 감사합니다! popBackStackImmediate()를 사용할 때 이전 조각의 깜박임이 있었으므로 다음과 같이했습니다. 'for (int framesLeft = fm.getBackStackEntryCount(); framesLeft> 0; --framesLeft) fm.popBackStack(); ' 기록에있는 항목을 삭제할 수있는 경우 대소 문자를 처리하는 방법을 알고 싶습니다. – Knotgrund
걱정하시는 점을 더 설명해 주시겠습니까? 세부 정보 조각 중 하나에서 수행 할 작업이있을 수 있다는 것을 의미합니까? 사용자가 목록에 올라갈 때 다시 스택에서 조각을 팝하지 않고 그 작업을 수행하려고합니다. 이 추측이 맞으면 프래그먼트의 onPause를 재정의 할 수 있습니다. – Bruce