¿Cómo puedo actualizar mi ListFragment cuando vuelve al diseño de la pila trasera?

Primero debo mencionar que estoy usando la biblioteca ActionBarSherlock para la compatibilidad con versiones anteriores.

Tengo una actividad que añade unListFragment cuando se inicia por primera vez. Tengo una costumbreLoader que implementé y sigue elEjemplo de AsnycTaskLoader muy cercano. MiListFragment implementa elLoaderCallbacks<Cursor> interfaz. Todos los métodos de devolución de llamada apropiados se llaman cuando se agrega el fragmento (onCreateLoader() , onLoaderFinished() ) y cuando se sustituye (onLoaderReset() ).

MionActivityCreated(Bundle) El método se ve así:

@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);
}

Más tarde, elListFragment se reemplaza con otro Fragmento B. Cuando el usuario presiona el botón Atrás, el Fragmento B se elimina y el ListFragment se agrega nuevamente. Sin embargo, la lista está vacía y solo laandroid:empty Se muestran los elementos y no se llama a ninguno de los métodos LoaderCallback. Puedo usar el depurador para determinar quegetLoaderManager().initLoader(0, null, this); En realidad se llama, pero nada más. Cuando lo cambio agetLoaderManager().restartLoader(0, null, this);, las devoluciones de llamada se llaman, pero aún así mi lista permanece vacía (aunque hay datos, la vista no se actualiza).

¿Cómo puedo hacer que ListFragment se actualice cuando se devuelve al diseño? ¿Alguien ha encontrado esto antes, cómo lo arreglaste?

Para tu información, aquí están mis métodos de devolución de llamada

    @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);
}

Algunas notas:

No puedo usar elsetListShown(true) Métodos en el ejemplo porque me sale unaIllegalStateException que no se puede utilizar con una vista de contenido personalizada.MiAccountsCursorAdapter extiende unSimpleCursorAdapter y modifica sólo elbindView() método.

Respuestas a la pregunta(7)

Su respuesta a la pregunta