5

Me gustaría notificar ViewPagerAdapter que el conjunto de datos ha cambiado en la función de devolución de llamada Loader.onLoadFinish.Cómo comprometer transacciones de fragmentos en FragmentPagerAdapter en el método de devolución de llamada onLoadFinish?

Se previene porque se puede guardar el estado de los fragmentos.

De LoaderManager.LoaderCallbacks.onLoadFinished(Loader loader, D data) documentación del método:

Tenga en cuenta que normalmente no se permite una aplicación para cometer transacciones fragmento mientras que en esta llamada, ya que puede suceder después de una actividad estatal es saved.`

¿Cómo puedo superar este problema? ¿Cómo puedo verificar en qué estado se encuentra Activity y confirmar la transacción Fragment?

Respuesta

4

he llegado con la siguiente solución:

Método changeCursorInOtherThread se utiliza en onLoadFinished y onLoaderReset.

Handler se crea en Activity:

private Handler mHandler = new Handler(); 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    mSaved = true; 

} 

private void changeCursorInOtherThread(final Cursor data) { 
    if(!mSaved){ 
     mHandler.post(new Runnable() { 

      @Override 
      public void run() { 
       mViewPagerAdapter.changeCursor(data); 
      } 
     }); 
    } 
} 
1

que tenía un problema similar. Quería mostrar un DialogFragment después de onLoadFinished(). Como dijiste, no es posible confirmar la transacción de fragmentos dentro de onLoadFinished(). Pero luego me di cuenta de que podía implementar LoaderCallbacks en el DialogFragment. Y funciona como un encanto. En lugar de escuchar el Loader para terminar su trabajo dentro de un Activity, lo hago dentro del Fragment.

Podría hacer lo mismo. En lugar de implementar onLoadFinished() dentro de su actividad, puede implementarlo dentro de los fragmentos que se colocan en su ViewPager. Por supuesto, en algunos casos no tiene sentido en un ViewPager, depende de su estructura de datos.

Hay más discusión sobre esta cuestión here.

Cuestiones relacionadas