1

두 오리 엔테이션을 포함하는 액티비티의 프래그먼트가 각기 다른 오리엔테이션을 표시합니다.오리엔테이션 변경시 다른 레이아웃의 이전 데이터 유지

세로 방향의 경우 firstLayout입니다.

가로 방향의 경우 secondLayout입니다.

두 레이아웃이 동일한 컨테이너에 표시됩니다.

그래서 나는 같은 것을 가지고 - 사용자가 장치 (가로 세로)를 회전 그럼 언제

if ((getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
        && getActivity().findViewById(R.id.fragment_container) != null) 
    { 

      view = inflater.inflate(R.layout.firstLayout, container, false); 
      //data 

      return view; 
    } 
    else 
    { 
      view = inflater.inflate(R.layout.secondLayout, container, false); 
      return view; 
    } 

을, 레이아웃 secondLayout가 호출됩니다. .

레이아웃 firstLayout 너무 많은 시간이 소요된다 - 사용자가 다시 레이아웃 secondLayout에서 프래그먼트 즉 레이아웃 firstLayout의 다른 레이아웃이 다시 호출 될 때 장치를 회전

문제이고 onCreate()에 많은 초기화 작업을하는 것처럼 응용 프로그램이 잠시 멈춘 것처럼 다시로드 할 수 있습니다.

그렇기 때문에, firstLayout은 조각으로 onCreate()을 호출하지 않고도 호출해야한다고 생각했습니다.

그래서 난 그냥
android:configChanges="orientation|screenSize" 

을 did- 다음 내 레이아웃 firstLayout을 팽창에 의한 방법 onConfigurationChanged(Configuration newConfig)를 오버라이드 (override). 그러나 이렇게함으로써 이전 데이터를 잃어 버렸습니다.

이전 상태를 유지하는 데 사용하는 약 setRetainState(true)에 대해 들었지만 방향 변경시 이전 데이터를 가져 오는 방법을 잘 모르겠습니다.

firstLayout을 방향 변경에 표시하는 가장 좋은 방법은 사용자가 뒤로 버튼을 클릭 할 때와 같은 빠른 방법입니다.

답변

0

당신이 그 2 개 조각 betwee 데이터를 전달해야하므로 setRetainState (사실은), 2 개 조각과 함께 작동하지 않습니다

구글의 코드 : 유래에 http://developer.android.com/training/basics/fragments/communicating.html

몇 가지 예 : Pass data between fragments Data Sharing between Fragments and Activity in Android

또는 단순히 클래스 변수에 데이터를 저장하는 경우

http://developer.android.com/reference/android/app/Fragment.html

: 오 입력 데이터는 여기

대한 추가 정보를 원하시면 onAttach

의 데이터를 onCreateView에 무시하고 부착하는 것을 잊지 마세요