2014-06-13 1 views
0

내 앱에는 SQLIte DB가 있습니다. DB에서 데이터가 필요한 ListView가 있으므로 로더에게 한 번만 시도해 보겠습니다. - 사용자 지정 로더를 사용하여 DB로부터 데이터를 취득하는 어댑터를 이용하여 목록보기가맞춤 SQLite 로더 - 다른 조각/활동에서 업데이트 수신 대기

조각 A :

나는이 개 조각을 가지고있다.

조각 B - 항목을 편집 한 다음 DB에서 업데이트하는 "항목 편집"조각입니다.

이후 조각 B 수없는 (그리고해야하지에서 내가 이해) 나는이 문제를 해결하는 방법을 조각 A.

를 업데이트하지 않습니다 조각 B의 항목을 편집, 조각 A의 로더에 액세스? 로더를 사용하여이 모든 것을 해결할 수 있습니까?

+0

잘 작성된 사용자 정의 ContentProvider 만 있으면됩니다. 메모장 자습서 – pskink

+0

ContentObserver를 사용 하시겠습니까? 나는 ContentObserver를 구현할 생각을했지만, 내가 필요로하는 것은 과잉이다. – dors

+0

아니요, ContentProvider, Uri를 등록하기 위해 ContentResolver를 사용하는 방법과 변경 사항을 알리는 방법을 참조하십시오. 메모장 제공자 – pskink

답변

0

두 조각이 동일한 활동에있는 경우 동일한 조각에 액세스 할 수 있습니다. loader. 두 번째 조각에서,

getActivity().getLoaderManager().initLoader(...); 

를 사용하여 코드의이 같은 줄을 :

getLoaderManager().initLoader(...); 

당신이 대신 일을해야 할 때 : 당신의 문제는이 같은 조각 내부의 로더를 초기화하는 것을 생각 동일한 로더에 액세스하고 편집 할 데이터를 표시합니다. 당신이로 돌아갈 때

getActivity().getLoaderManager().getLoader(loaderId).forceLoad(); 

: 당신이 그것을 편집하고 데이터베이스를 업데이트하면, 당신은 (당신이 사용자 정의 로더에서 관찰자를 구현되지 않기 때문에) 로더에 새 데이터를로드, forceLoad()를 호출해야 첫 번째 조각이 있으면 뷰 계층 구조가 생성되고 또는 onActivityCreated()에 호출되어 onLoadFinished()을 직접 호출하고 두 번째 조각에서 이미 업데이트되었으므로 initLoader()이 호출되고 initLoader()이 호출됩니다.

+0

을 참조하십시오. 이는 작업에서 로더를 가져 오는 것이 좋습니다. forceLoad tough가 필요하지 않은 것 같습니다. – dors