Android Fragment 전환 시 Fragment 를 다시 로드하지 않음

6317 단어 소결
개발할 때 때때로 Fragment의 전환은 원래의 Fragment를 다시 불러올 필요가 없다.Fragment의 인터페이스는 다시 불러올 수도 있고 다시 불러오지 않을 수도 있다.
매번 다시 불러올 때마다, 우리는fragment의 교체를 위해 사용하는 Replace를 사용합니다.
만약fragment의 데이터를 다시 불러오지 않으면dd로fragment를 추가합니다. 표시할 때는 show를 사용하고, 전환할 때는hide로 현재, show 전환 목표를 삭제합니다.
구체적인 실현 코드는 다음과 같다.
private FragmentManager fm;
private FragmentTransaction ft;
//     fragment
public Fragment mContent, fragment_in, fragment_qm, fragment_se;
//  fragment
fragment_in = new MakePlanFragment();
fragment_qm = new CourseFragment();
fragment_se = new MakePlanFragment();
setDefaultFragment(fragment_in);
기본fragment 디스플레이를 설정합니다.전환이 없을 때 보이는fragment입니다.
public void setDefaultFragment(Fragment fragment) {
    fm = getFragmentManager();
    ft = fm.beginTransaction();
    ft.add(R.id.fragment_content, fragment).commit();
    mContent = fragment;
}
//  fragment     
public void switchContent(Fragment to) {
    if (mContent != to) {
        fm = getFragmentManager();
        ft = fm.beginTransaction();
        if (!to.isAdded()) {    //       add 
            ft.hide(mContent).add(R.id.fragment_content, to).commit(); //      fragmentadd    Activity 
        } else {
            ft.hide(mContent).show(to).commit(); //      fragment        }
        mContent = to;
    }
}
위의 이 switchContent 방법은fragment를 전환하는 방법으로 봉인하는 것입니다.사용하는 곳에서 우리가 필요로 하는 목표fragment로 직접 전송하면 됩니다.다음과 같습니다.
switchContent(fragment_in);
우리가 전환할 목표fragment에 참조한다.이렇게 하면 우리의 전환fragment를 실현하지만 다시 불러오지 않습니다.
다시 로드하는 경우 키 코드는 다음과 같습니다.
fm = getFragmentManager();
ft = fm.beginTransaction();
ft.replace(R.id.fragment_content, fragment_in);
ft.commit();
이것이 바로 무거운 짐을 싣는 것과 다시 싣지 않는 것의 차이이다.본질을 이해하면 훨씬 간단해진다.

좋은 웹페이지 즐겨찾기