En la documentación de Android para los cargadores que se encuentra en http://developer.android.com/guide/components/loaders.html se dice que una de las propiedades de los cargadores es que:cargador se reinicia el cambio de orientación
se vuelven a conectar automáticamente al cursor del último cargador al ser recreada después de un cambio de configuración. Por lo tanto, no necesitan volver a consultar sus datos.
El siguiente código no parece reflejar ese comportamiento, se crea un nuevo cargador y finaliza la consulta del ContentResolver, ¡luego giro la pantalla y el Loader se vuelve a crear!
public class ReportFragment extends Fragment implements LoaderCallbacks<Cursor> {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLoaderManager().initLoader(1, null, this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_report, container, false);
return v;
}
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Log.d("TEST", "Creating loader");
return new CursorLoader(getActivity(), ResourcesContract.Reports.CONTENT_URI, null, null, null, null);
}
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
Log.d("TEST", "Load finished");
}
public void onLoaderReset(Loader<Cursor> arg0) {
}
}
Aquí está la salida de mi Logcat:
08-17 16:49:54.474: D/TEST(1833): Creating loader
08-17 16:49:55.074: D/TEST(1833): Load finished
*Here I rotate the screen*
08-17 16:50:38.115: D/TEST(1833): Creating loader
08-17 16:50:38.353: D/TEST(1833): Load finished
Alguna idea de lo que estoy haciendo mal aquí?
EDIT:
Debo señalar que estoy construyendo a Android versión de Google API 8, y el uso de la biblioteca de soporte v4.
segundo EDIT:
Esto es muy probablemente debido a un error en la biblioteca de soporte, echar un vistazo a este envío de errores si desea más información:
Consulte esta publicación para obtener más información: http://www.androiddesignpatterns.com/2012/08/implementing-loaders.html –
Además, debe llamar a 'getLoaderManager()' en 'onActivityCreated' ... su código actual arrojará una 'IllegalStateException' si la' Activity' todavía es 'null' cuando se crea el' Fragment' por primera vez. –
@AlexLockwood, en su ejemplo (¡buen trabajo!) Está utilizando support-v4: 18.0.0. La versión actual es 23.0.1 y contiene este error. La última versión de trabajo que probé es 22.0.0. –