Tôi đang gặp phải sự cố với Trình tải.Android - onLoadFinished không được gọi là
Tôi có Hoạt động, hiển thị danh sách các bản ghi được lấy từ DB địa phương. Khi hoạt động bắt đầu, các bản ghi sẽ tự động được tải thông qua phương thức LoaderManager.initLoader().
Cũng có khả năng làm mới danh sách theo cách thủ công thông qua nút làm mới trong ActionBarSherlock. Tuy nhiên, sau khi hoàn thành một hoạt động khác mà thêm một bản ghi vào DB, onLoadFinished không được gọi.
Tôi đang sử dụng SimpleCursorLoader và đây là đoạn mã từ hoạt động:
@Override
public void onStart() {
...
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public void onPause() {
...
getSupportLoaderManager().destroyLoader(0);
}
public void refreshRecords() {
getSupportLoaderManager().restartLoader(0, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, final Bundle args) {
Loader<Cursor> l = new SimpleCursorLoader(this) {
@Override
public Cursor loadInBackground() {
return recordDAO.getCursor();
}
};
l.forceLoad();
return l;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {
// updateUI
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
Vấn đề là sau khi kết thúc hoạt động khác, onLoaderCreate
được gọi, nhưng onLoaderFinished
không được gọi.
sau khi một số lỗi, tôi đã phát hiện ra rằng SimpleCursorAdapter.deliverResults()
còn được gọi là, nụ kết thúc lên trên .. if (isReset()) { ..
Tôi có thiếu cái gì? Làm cách nào để buộc tải lại dữ liệu?
Cảm ơn bạn trước
Làm việc cho tôi. Cảm ơn bạn. –
Không phù hợp với tôi! – Radu
Hầu như giải pháp đúng: như đã đề cập trên https://groups.google.com/forum/#!topic/android-developers/DbKL6PVyhLI (và tôi đã thử nghiệm nó), điều kiện đặt lại là! Loader.isReset(), nghĩa là, 'Bạn chỉ nên khởi động lại bộ nạp nếu bộ nạp KHÔNG được đặt lại.' (được viết bởi Etienne). Vui lòng cập nhật câu trả lời của bạn. – Pascal