2016-10-11 3 views
0

addToBackStack()을 호출하지 않고 프래그먼트를 다른 프래그먼트로 교체 할 때 프래그먼트 트랜잭션이 수행 될 때들을 필요가 있습니다. FragmentManager 클래스는 addOnBackStackChangedListener 콜백을 제공하지만, addToBackStack을 호출하지 않고 프래그먼트 대체를 수행하면 실행되지 않습니다.안드로이드 프래그먼트 트랜잭션 리스너

편집 : 수신 작업은 활동 인스턴스 및 해당 부분 관리자 만 액세스 할 수있는 클래스에서 수행됩니다.

+0

처럼 BaseFragment에서 조각을 확장? –

+0

조각이 파손될 때 일부 작업을 수행하는 라이브러리의 경우. –

답변

0

Fragment의 onAttach() 메소드를 사용할 수 있습니다.

+0

프래그먼트 트랜잭션의 수신 작업은 액티비티 인스턴스와 해당 FragmentManager에 대한 액세스 권한 만 가진 클래스에서 수행됩니다. 나는 명확하게하기 위해 나의 질문을 편집 할 것이다. –

0

모든 조각에 기본 클래스를 사용할 수 있습니다. 그런 다음 onDetach() 메서드를 재정의 할 수 있습니다. 예를 들어

public class BaseFragment extends Fragment { 

@Override 
public void onDetach() { 
    // run code that needed by your library. e.g. 
    if (getActivity() != null && getActivity() instanceof MainActivity) { 
    ((MainActivity)getActivity()).someMethodToDetectOnDetach(); 
    } 
    super.onDetach(); 
} 

그리고는 당신이 필요로하는 무슨 목적으로이

public class MyFragment extends BaseFragment { 
// ..... 
} 
+0

onAttach (Context context)에서 사용할 수있는 것과 동일한 동작입니다. 메서드 (아마도 더 좋을 것입니다.) –

+0

예, 할 수는 있지만 라이브러리 프로젝트를 구축 중이므로 기본 클래스를 사용하는 것과 같은 일을 강요하고 싶지는 않습니다. 그러나 나는 그것을 할 수있는 다른 방법이 없다고 생각합니다. –