2011-09-21 3 views
3

Я использую LoaderManager.LoaderCallbacks<Cursor> в моем FragmentActivity.Android LoaderCallback не обновляется

Я призываю в onResume(): getSupportLoaderManager().restartLoader(0, null, loader);

Я призываю в onCreate():

loader = new ApplicationLoader(); 
getSupportLoaderManager().initLoader(0, null, loader); 

Наконец у меня есть:

button.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     // Deleting row from database 
    } 
}); 

Но мой список не обновляется его элементов.

Единственный способ работать это вызвать:

loader = new ApplicationLoader(); 
getSupportLoaderManager().restartLoader(0, null, loader); 
+0

Вы когда-нибудь это выясняли? – Adam

ответ

3

У меня была аналогичная проблема. Я забыл позвонить:

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

После вставки, обновления и удаления. Кроме того, не закрывают никаких курсоров. Загрузчик делает это за вас.

+0

Погрузчики не закрывают курсор автоматически. Вы должны вызвать ['changeCursor (null)'] (http://developer.android.com/reference/android/support/v4/widget/CursorAdapter.html#changeCursor (android.database.Cursor)), чтобы закрыть курсор , –

+0

Да, я забыл ответить на мой вопрос. Это точно. – CeccoCQ

+1

@LaiVung «Загрузитель выдает данные после того, как он знает, что приложение больше не использует его. Например, если данные являются курсором из CursorLoader, вы не должны называть его close() самостоятельно. Если курсор помещенный в CursorAdapter, вы должны использовать метод swapCursor(), чтобы старый Курсор не был закрыт ». -http: //developer.android.com/guide/components/loaders.html – Adam