0

여러 조각을 사용하고 있습니다. 요구 사항에 따라 이러한 조각을 성공적으로 전환하고 있지만 조각 1을 조각 2로, 조각에서 조각으로 전환 할 때 문제가 있습니다. 2에서 Fragment 1, Fragment 1은 이전 데이터를 보여주지 않습니다 Fragment 1은 stretch에서 시작하지만 이전 데이터는 내가 선택한 것처럼 보여주고 싶습니다.조각이 다른 조각에서 왔을 때 이전 데이터가 표시되지 않습니다.

FragmentManager manager = getActivity().getSupportFragmentManager(); 


FragmentTransaction transaction = manager.beginTransaction(); 

Log.d("fragment_Search", fromSearch + ""); 
transaction.replace(R.id.custIndoFram, new fragment_search_customerProfile()); 

FrameLayout layout = (FrameLayout) rootView.findViewById(R.id.custIndoFram); 

layout.removeAllViewsInLayout(); 

transaction.remove(new fragment_CustomerInfo()).commit(); 
다음은
FragmentManager manager = getActivity().getSupportFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.replace(R.id.filterFram, new fragment_Search()); 

FrameLayout layout = (FrameLayout) rootView.findViewById(R.id.cpFrame); 
layout.removeAllViewsInLayout(); 

transaction.remove(new fragment_search_customerProfile()).commit(); 

다시 조각 1 (fragment_search_customerProfile) fromFragment 2 (fragment_CustomerInfo)에 대한 내 코드입니다 : 여기

는 조각 2로 이동 조각 1 (fragment_search_customerProfile) (fragment_CustomerInfo) 내 코드입니다

누군가 내 프런트 데이터를 저장하는 방법을 설명 할 수 있습니까? 조각이에서 첫 번째 transaction.add(R.id.filterFram, new fragment_Search()); transaction.addToBackStack(null); 의 데이터를하면서

답변

1

대신 transaction.replace(R.id.filterFram, new fragment_Search()); 의 첫 번째 조각 을 표시하고 처음부터 조각이를 숨길 수는 .show 사용하는 대신에 대체 할 수있는 조각을 추가 할 transaction.add 사용할 수 있습니다 . transaction.show(getSupportFragmentManager().findFragmentByTag("firstFragmentTag")).commit();

+0

날 나에게 너무 가기 backstack에 추가 이전 –

+0

먼저를 확인하자 교체해야합니다. –

+0

시도와 동일한 결과를 제공 –

0

조각의 인스턴스를 간단하게 유지할 수 있으므로 Activity에는 필드가 있습니다.

private Fragment fragment1; 
private Fragment fragment2; 

그리고 지금 당신은 섹시한 replace() 옵션을 사용할 수 있습니다,

Fragment2

에 대한 Fragment1

if (fragment1 == null) { 
    fragment1 = new fragment_Search(); 
} 
FragmentManager manager = getActivity().getSupportFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.replace(R.id.filterFram, fragment1); 

과 같은 추가하고 당신이 조각의 상태를 유지할 수 (데이터 그것은 Fragment 자체에서 검색하고, 귀하의 onViewCreated()에서 확인하십시오, 상태가 아닌 경우 null, 즉시보기를 업데이트합니다.

class Fragment1 extends Fragment { 
    private State state; 

    public void onViewCreated(View v) { 
     if (state != null) { 
      // Update UI here 
     } 
    } 

} 

UPDATE

당신이 경우 중요하지 않습니다, 자신의 코드와 동일해야합니다 fragment2에가는

private Fragment fragment1; // This is a field outside of below method 


if (fragment1 == null) { 
    fragment1 = new fragment_Search(); 
} 
FragmentManager manager = getChildFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.replace(R.id.filterFram, fragment1).commit(); 

FrameLayout layout = (FrameLayout) rootView.findViewById(R.id.cpFrame); 
layout.removeAllViewsInLayout(); 

을 사용하여,이 코드는 Fragment1 및 Fragment2로 이동하는 데 사용됩니다 돌아가거나 처음으로.

+0

나는 활동을하고 있지 않다. 나는 조각으로 일하고있다. –

+0

조각도 마찬가지로 작동해야합니다. 대신 getChildFragmentManager()를 사용해야합니다. – elmorabea

+0

이 코드를 추가하는 부분을 이해할 수 없기 때문에 제 질문에이 코드를 추가 할 수 있습니까? –

0

는 대신 제거의 조각을 추가하거나

관련 문제