Development Tip

조각의 onSaveInstanceState ()는 호출되지 않습니다.

yourdevel 2020. 11. 21. 09:10
반응형

조각의 onSaveInstanceState ()는 호출되지 않습니다.


Fragment의 onSaveInstanceState ()에 데이터를 저장하려고하는데 메서드가 호출되지 않습니다.

누군가 도울 수 있습니까?

public class MyFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        ScrollView content = (ScrollView) inflater.inflate(R.layout.content, container, false);
        // More stuff
        return content;
    }

    @Override
    public void onSaveInstanceState(Bundle icicle) {
        // NEVER CALLED
        super.onSaveInstanceState(icicle);
        //More stuff
    }

}

적어도 내 경우에는 마침내 문제를 파악했습니다. onSaveInstanceState호출하지 않은 FragmentActivity에서 재정의 되었습니다 super.onSaveInstanceState(Bundle outState). 그것을 추가하면 Fragment.onSaveInstanceState(Bundle outState)정상적으로 작동합니다.


나는 당신과 같은 질문을 만나 onSaveInstanceState () 메서드를 시도했지만 작동하지 않았습니다.

onSaveInstanceState ()는 사용자가 한 활동에서 다른 활동으로 이동했다가 뒤로 이동하는 시나리오에서만 작동한다고 생각합니다. 사용자가 동일한 활동에서 조각 사이를 이동하는 시나리오에서는 작동하지 않습니다.

다음은 Google의 가이드 문서입니다. http://developer.android.com/guide/components/tasks-and-back-stack.html#ActivityState


확인해야 할 한 가지는 android:configChangesAndroidManifest.xml에 플래그 를 포함하여 조각을 포함하는 활동이 다시 시작을 방해하지 않는지 확인하는 것 입니다.


일부 상황에서는 대신 조각 인수 를 사용하는 것이 도움이 될 수 있습니다 savedInstanceState. 추가 설명 .


액티비티에서 FragmentManager # saveFragmentInstanceStateFragment # setInitialSavedState호출 해보세요 . saveFragmentInstanceState를 호출하면 프레임 워크가 onSaveInstanceState를 호출합니다. 그리고 setInitialSavedState를 호출하면 프레임 워크는 null 인수 'Bundle savedInstanceState'없이 onCreateView를 호출합니다.


전화 시도 setRetainInstance(true)onCreate(Bundle savedInstanceState).

참고 URL : https://stackoverflow.com/questions/8503629/fragments-onsaveinstancestate-is-never-called

반응형