0

2 개의 조각이 있습니다. 첫 번째 조각에는 서버에서 가져 오는 항목의 목록보기가 있습니다. 목록 항목을 클릭하면 클릭 한 항목의 세부 정보가있는 두 번째 조각으로 이동합니다. 그러나 이전의 프래그먼트로 돌아가서 탐색 할 때 서버에서 데이터를 가져 오는 동일한 프로세스를 거쳐야합니다. 이것을 피할 수있는 방법이 있습니까? 해당 네트워크 요청을 다시하지 않고 이전 조각으로 돌아갈 수 있습니까?조각이 동일한 네트워크 호출을 다시 호출합니다.

+0

예 여러 가지 방법을 피할 수 있습니다. – Piyush

+1

조각 교환을 위해 대체를 사용하고 있습니까? add를 사용하면 조각이 제거되지 않습니다. 몇 가지 코드를 추가 할 수 있으면 도움이 될 것입니다. 참조 할 수 있습니다. https://developer.android.com/guide/components/fragments.html#Transactions –

+0

예 replace 메소드를 사용하고 있습니다. 그 문제가 그 이유입니까? 이전 조각을 대체하기 때문에 돌아올 때 상태를 다시 생성해야합니다? – slenderm4n

답변

0

나는 뒤로 어떻게 가야하는지 잘 모르겠습니다. onBackPress 메서드를 재정의하고 조각 전환을 통해 조각을로드했기 때문에 이것이라고 생각합니다. 다시 누르면 조각을 시작하고 새 사본 조각 객체를 만듭니다. 네트워크 호출이 다시 호출되지 않도록 방지 할 수 있습니다.

시도해 볼 수 있습니다. onbackpress 메서드를 재정의합니다.

@Override 
public void onBackPressed() { 
    int count = getSupportFragmentManager().getBackStackEntryCount(); 
    if (count == 0) { 
     navigateActivity(HomeActivity.class); 
    } else { 
     getSupportFragmentManager().popBackStackImmediate(); 
    } 
} 

그리고 다음과 같이 새로운 조각을 시작,이 도움이 될 것입니다

public void switchFragment(Fragment frag) { 
    String backStateName = fragment.getClass().getName(); 

    FragmentManager manager = getSupportFragmentManager(); 
    boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0); 

    if (!fragmentPopped){ 
     fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(R.id.report_fragment, frag); 
     fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
     fragmentTransaction.addToBackStack(backStateName); 
     fragmentTransaction.commit(); 
    } 

}

희망.