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:
- FragmentManager agrega varias instancias del mismo tipo de fragmento
- Implementación de DatePicker en Fragmento
- Cargar imagen desde la cámara a ImageView en un fragmento
- ListView dentro de un fragmento utilizado en un ViewPager no se comporta como se esperaba
- Borrar fragmento back stack programmatic
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>
- Cómo descartar un DialogFragment al presionar fuera del cuadro de diálogo?
- Repoblando valores en Android Fragment onResume
- Android - ¿En qué hilo se ejecutan los fragmentos?
- ¿Cómo agregar otro fragmento en el fragmento existente?
- Android.view.InflateException: Línea de archivo XML binario # 2: Error al inflar fragmento de clase
- PreferenceFragment crashing, objeto nulo Referencia
- Fragment onResume () no se llama cuando se utiliza FragmentPagerAdapter
- OnCreateOptionsMenu no se llama a FragmentActivity cuando se ejecuta en la versión de teléfono
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.
- Acerca del puerto SMS de Android
- ¿Cómo puedo detener una animación infinita en un ImageView, pero dejarlo completar su ciclo actual?