Ho un FragmentStatePagerAdapter con 6 frammenti all'interno.FragmentStatePagerAdapter onPageEvento selezionato
Ogni frammento si collega al server e carica i dati.
In questo momento, la connessione al server è in corso in Fragment.onStart(), ciò significa che in qualsiasi momento, ho 3 richieste HTTP in corso (il frammento selezionato e uno su ciascun lato).
Quello che voglio è quello di avere una sola connessione in quel momento, così ho capire di usare
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
{
@Override
public void onPageSelected(final int position)
{
CustomFragment fragment = (CustomFragment) myFragmentStatePagerAdapter.getItem(position);
fragment.onSelected();//do stuff in here
}
});
Il fatto è che, getItem()
restituisce una nuova istanza del frammento, non ancora aggiunto al gestore (e quindi, non ancora vista creata, ecc.).
Inoltre, ho provato setUserVisibleHint(boolean isVisibleToUser)
ma non viene chiamata in visibile, solo su isVisibleToUser = false
Quindi, come per ottenere una "onPageSelected()" evento per il frammento?
Grazie in anticipo
È possibile utilizzare AsyncTask con un esecutore SERIAL. http://developer.android.com/reference/android/os/AsyncTask.html#SERIAL_EXECUTOR Avrai 1 cosa in esecuzione alla volta, ma può fare la coda. Assicurati di chiamare cancel() nel tuo onStop, non esegui attività che non ti servono più – whizzle
Puoi ancora usare 'OnPageChangeListener', ma per accedere al frammento avrai bisogno di un approccio diverso. Dai un'occhiata a questa domanda http://stackoverflow.com/questions/7379165/update-data-in-listfragment-as-part-of-viewpager?lq=1 – Luksprog