Como posso atualizar meu ListFragment quando ele retorna ao layout da pilha de retorno?

Primeiro, devo mencionar que estou usando a biblioteca ActionBarSherlock para compatibilidade com versões anteriores.

Eu tenho uma atividade que adiciona umListFragment quando é iniciado pela primeira vez. Eu tenho um costumeLoader que eu implementei e siga oExemplo AsnycTaskLoader muito próximo. MinhasListFragment implementa oLoaderCallbacks<Cursor> interface. Todos os métodos de retorno de chamada apropriados são chamados quando o fragmento é adicionado (onCreateLoader() , onLoaderFinished() ) e quando é substituído (onLoaderReset() ).

MinhasonActivityCreated(Bundle) método é assim:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mAccountsDbAdapter = new AccountsDbAdapter(getActivity().getApplicationContext());

    setHasOptionsMenu(true);
    mCursorAdapter = new AccountsCursorAdapter(getActivity()
            .getApplicationContext(), R.layout.list_item_account, null,
            new String[] { DatabaseHelper.KEY_NAME },
            new int[] { R.id.account_name }, 0);

    setListAdapter(mCursorAdapter); 
    getLoaderManager().initLoader(0, null, this);
}

Mais tarde, oListFragment é substituído por outro Fragmento B. Quando o usuário pressiona o botão Voltar, o Fragmento B é removido e o ListFragment é adicionado novamente. No entanto, a lista está vazia e apenas oandroid:empty elementos são exibidos e nenhum dos métodos LoaderCallback é chamado. Eu posso usar o depurador para determinar quegetLoaderManager().initLoader(0, null, this); é realmente chamado, mas nada mais. Quando eu mudo paragetLoaderManager().restartLoader(0, null, this);, os callbacks são chamados, mas minha lista continua vazia (embora haja dados, a visualização não é atualizada).

Como posso obter o meu ListFragment para se atualizar quando é retornado para o layout? Alguém já encontrou isso antes, como você consertou isso?

FYI, aqui estão os meus métodos de callback

    @Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    return new AccountsCursorLoader(this.getActivity()
            .getApplicationContext());
}

@Override
public void onLoadFinished(Loader<Cursor> loaderCursor, Cursor cursor) {
    mCursorAdapter.swapCursor(cursor);
    mCursorAdapter.notifyDataSetChanged();
}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {
    mCursorAdapter.swapCursor(null);
}

Algumas notas:

Eu não posso usar osetListShown(true) métodos no exemplo, porque eu recebo umIllegalStateException que não pode ser usado com uma exibição de conteúdo personalizada.MinhasAccountsCursorAdapter estende umSimpleCursorAdapter e modifica apenas obindView() método.

questionAnswers(7)

yourAnswerToTheQuestion