3

에 2 개의 ViewPagers이 있습니다. 각 ViewPager에는 여러 개의 Fragments이 포함되어 있습니다. ViewPagerFragmentsListViews에 데이터를 얻습니다. [main]Fragment입니다. 모든 ListViews의 데이터를 업데이트해야합니다.이 데이터는 [main]Fragment에서 가져옵니다.ViewPager에서 조각의 데이터를 다시로드하거나 알리십시오


나는 [main]Fragment 현재 제거하고 새로운 하나를 (다시로드) 추가하려고했지만, 내가 [main]Fragment 파괴 또는 분리되지 .supportFragmentManager().remove([main]Fragment) 또는 .detach([main]Fragment) 메소드를 호출하고 때, 그냥 숨어 나는 새로운 추가 기운 다 하나, 그냥 현재 .atach([main]Fragment) ... 다시로드 활동은 나쁜 생각입니다. 도와주세요.

+0

childFragmentManager를 사용 했습니까? – Akhil

+0

이것은 많은 형태가 필요하고 여러 가지 방법으로 수행 될 수 있기 때문에 어려운 질문입니다. 네가 사용자 ID를 가지고 있기 때문에 콘텐츠 관찰자 솔루션을 아래에 포함 시켰습니다. – danny117

+0

Akhil, 예. 모든 어린이 조각 들어. – AskQuestion

답변

0

Content Observers

여기에 링크하는 방법을 보여주지 않는 간단한 URI를합니다. 이것을 데이터를 변경하는 클래스에 넣으십시오. 그러면 어떤 단편도 ClassName.CONTENT_URI를 통해 정적으로 액세스 할 수 있습니다.

private static final String BASE_PATH = "Imustdorefresh";//see content providers 
private static final String AUTHORITY = "somethinguniquehereprobablyappcomname"; 
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY 
      + "/" + BASE_PATH); 

이 코드는 onpause에서 등록을 취소하는 것을 잊지 마세요 링크를 참조 onresume 조각에 간다

getContentResolver(). 
     registerContentObserver(
      CONTENT_URI, 
      true, 
      yourObserver); 

// yourObserver는

{여기에 코드를 물건을 할} 조각을 갱신하는 코드입니다 데이터를 변경하는 코드 조각에서는 모든 데이터가 변경된 후에 contentresolver notify 메서드를 호출합니다. 컨텐트 리졸버는 프래그먼트에 등록 된 옵서버를 호출합니다.

getContext().getContentResolver().notifyChange(CONTENT_URI,null); 

자세한 내용은 콘텐츠 제공 업체 및 콘텐츠 관찰자를 참조하십시오. Content Provider

+0

그것은 나를 위해 잘못된 솔루션입니다. 나는 ArrayList를 가져 와서 메인 프래그먼트에서 업데이트해야한다. 그런 다음 자식 프래그먼트는이 ArrayList의 일부를 가져 와서 업데이트해야하는 listview에 표시해야한다. 그런 식으로하는 법을 아는 분이라면 제발 도와주세요. – AskQuestion

+0

메인 조각 arraylist를 업데이트하고 호출기 어댑터에 알릴 수 있습니까? 그러나 내가 그것을했을 때 아이 조각들은 아무 것도하지 않습니다 ... 어쩌면 내가 뭔가 잘못한 것일 수도 있습니다. – AskQuestion

+0

이 솔루션은 다양한 앱에서 작동하므로 중첩 된 하위 조각의 모든 수준에서 쉽게 작동합니다. 핵심은 컨텐트 분석자가 공급자와 관찰자 간의 메시징을 처리한다는 것입니다. – danny117

관련 문제