Android Refreshing Fragment View después de AsyncTask

Estoy intentando actualizar el fragmento de la lista cuando un AsyncTask en mi actividad termina pero no estoy seguro si estoy haciendo algo mal. Actualmente, tengo un botón que inicia el AsyncTask :

 search = (Button)findViewById(R.id.search); search.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { String productname = prodname.getText().toString().trim(); if (NetworkManager.isOnline(getApplicationContext())){ // Go to Other screen AsyncFetcher results = new AsyncFetcher(currActivity); String _url = "http://192.168.1.3:3000/search.json? utf8=%E2%9C%93&q="+productname; // progressDialog = ProgressDialog.show( // ClassifiedsActivity.this, "", "Loading..."); results.execute(_url); } else { // Throw some warning saying no internet // connection was found } } }); 

Una vez que mi ejecución se ha terminado tengo siguiente para instanciar fragmento dentro de mi actividad:

 ResultFragment resultfrag = new ResultFragment(); getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, resultfrag).commit(); 

Sin embargo, no parece reemplazar mi contenido con el fragmento de lista. Aquí está mi archivo de diseño:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> 

Primero reemplazar un fragmento no es nada como refrescarlo. Sí, recarga todas las vistas en ella y los datos también. Pero tienes que relacionarlo con tus nuevos datos. Por lo tanto, le recomiendo crear un método de actualización en su fragmento y enviar este método sus datos actualizados, a continuación, notifique a su adaptador como dataSetChanged .

Para lograr esto, vas a necesitar llegar a tu fragmento actualmente conectado y llamar a su método de actualización. Puede utilizar findFragmentByTag para alcanzarlo.

Editar: Para aclarar un poco más

Cuando su AsyncTask se hace, usted debe hacer algo como esto onPostExecute método:

 ResultFragment resultFrag = (ResultFragment) getSupportFragmentManager() .findFragmentByTag("FragToRefresh"); if (resultFrag != null) { resultFrag.refreshData(refreshedArray); } 

Y en su ResultFragment necesita tener el método refreshData , que es algo como esto:

 public void refreshData(ArrayList<YourObject> data) { yourArray = new ArrayList<YourObject>(data); yourAdapter.notifyDataSetChanged(); } 

Y su lista se actualizará cada vez que se realice su tarea.

  • Obtener información de fragmentos visibles actuales en android dumpsys
  • Reemplazar un fragmento mediante programación
  • Contextthemewrapper no se puede transmitir a la actividad
  • Cuando se aplica onBackPressed en Fragment que extiende el diálogo Fragment
  • Cómo obtener un fragmento añadido en un diseño XML
  • Android Fragmento y la inyección de dependencia
  • El Menú contextual de Fragmento utiliza ListView de otro Fragmento: registerForContextMenu (getListView ())
  • Uso de RoboFragment con FragmentManager
  • java.lang.IllegalStateException: Actividad destruida - fragmento de Android
  • Android Fragment no respeta a match_parent como altura
  • Paso de fragmentos entre las actividades
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.