2

functionaly 코드가 더 이상 작동하지 않아 오늘 몇 시간을 잃었습니다.새로 고침 조각이 더 이상 작동하지 않습니다.

FragmentManager manager = getActivity().getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
fragmentTransaction.detach(fragment); 
fragmentTransaction.attach(fragment); 
fragmentTransaction.commit(); 

내가 디버그 일부 퍼팅을 시도했다 : 이것은 내 코드

입니다 : 코드는 지원 라이브러리 25.1.0의 새로운 버전으로 업데이트 한 후 더 이상 작동하지 않는 조각의보기를 다시로드

public void onPause() 
public void onStop() 
public void onAttach(Context context) 
public void onDetach() 
public void onDestroyView() 
public void onDestroy() 

에 중단하지만, 응용 프로그램이 해당 기능과 아무것도의 체결되지 않은 화면에 일어났다.

첨부 파일을 단독으로 호출하면 응용 프로그램이 onPause 및 onStop에 입력되고보기가 화면을 벗어납니다.

+1

질문을 분리 한 다음 질문에 답해야합니다. 질문과 답변을 함께 쓰지 마십시오. 혼란 스럽습니다. –

+0

@RickS 알았어, 끝났어;) –

+0

고마워! 잠시 후 허용되는 답변으로 표시 할 수 있어야합니다. –

답변

3

나는 똑같은 문제에 직면 해 있으며 온라인으로 답변을 찾지 못했습니다. 마지막으로 지원 라이브러리 개정 25.1.1의 조각 트랜잭션에 몇 가지 최적화가 추가되었음을 알았습니다. (https://developer.android.com/topic/libraries/support-library/revisions.html#25-1-1 참조). 트랜잭션에 대한 사람들을 비활성화하면 예상대로 작동하게됩니다

setAllowOptimization가되지 않습니다

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.setAllowOptimization(false); 
transaction.detach(fragment).attach(fragment).commitAllowingStateLoss(); 

업데이트. 대신 setReorderingAllowed을 사용하십시오.

+0

왜'commit' 대신에'commitAllowingStateLoss'를 사용하도록 제안합니까? – Aba

1

고맙습니다. 다음은 getSupportFragmentManager를 사용하여 약간 수정 한 것입니다.

FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction(); 
t.setAllowOptimization(false); 
t.detach(this).attach(this).commitAllowingStateLoss();