ViewPager의 항목이 Fragment인 경우 일반적으로 FragmentPagerAdapter이 Adapter로 사용되며, 이 클래스는 Fragment 추가 시 태그를 추가하게 됩니다. 소스의 FragmentPagerAdapter 메소드 instantiateItem()를 참고하세요.
의 코드
으아악
이 태그는 makeFragmentName()의 private 메소드를 통해 얻어지지만, 이 메소드의 viewId 매개변수는 ViewPager의 id여야 하며, itemId는 getItemId() 메소드를 사용하면 됩니다. 태그를 직접 조립하여 조각을 얻을 수 있습니다. 그게 전부입니다.
저도 이 문제에 대해 한동안 고민해 보았는데, 검색해봐도 마땅한 해결 방법을 찾을 수 없었습니다. pagerfragmentadapter에서는 해당 조각을 얻기 위한 API를 제공하지 않는 것 같습니다. 인덱스에 약한 참조 목록을 만들어 프래그먼트를 초기화할 때 어댑터에 추가한 다음 어댑터의 onDestroyItem(아마도 이렇게 불렀는지 기억이 안 나네요)을 다시 작성하여 목록에서 해당 항목을 제거했습니다. 여기. 조각 인스턴스를 얻은 후 원하는 대로 작동할 수 있습니다.
의 코드 으아악ViewPager
의 항목이Fragment
인 경우 일반적으로FragmentPagerAdapter
이 Adapter로 사용되며, 이 클래스는Fragment
추가 시 태그를 추가하게 됩니다. 소스의FragmentPagerAdapter
메소드instantiateItem()
를 참고하세요.이 태그는
makeFragmentName()
의 private 메소드를 통해 얻어지지만, 이 메소드의 viewId 매개변수는ViewPager
의 id여야 하며, itemId는getItemId()
메소드를 사용하면 됩니다. 태그를 직접 조립하여 조각을 얻을 수 있습니다.그게 전부입니다.
RecyclerView를 사용한다면 이렇게 Eventbus를 사용할 수 있습니다
으아악저도 이 문제에 대해 한동안 고민해 보았는데, 검색해봐도 마땅한 해결 방법을 찾을 수 없었습니다. pagerfragmentadapter에서는 해당 조각을 얻기 위한 API를 제공하지 않는 것 같습니다.
인덱스에 약한 참조 목록을 만들어 프래그먼트를 초기화할 때 어댑터에 추가한 다음 어댑터의 onDestroyItem(아마도 이렇게 불렀는지 기억이 안 나네요)을 다시 작성하여 목록에서 해당 항목을 제거했습니다. 여기.
조각 인스턴스를 얻은 후 원하는 대로 작동할 수 있습니다.
Fragment가 포그라운드에 있을 때 LocalBroadcastManager / EventBus / otto / Rx를 사용하여 이벤트(메시지)를 구독할 수 있습니다.
Fragment가 백그라운드로 전환되면 구독을 취소하세요. Fragment가 다시 포그라운드로 전환되면 페이지 데이터를 새로 고치고 다시 구독하세요