Cómo cargar datos de fragmentos solo cuando se hace clic en su pestaña en PagerSlidingTabStrip

estoy usandoPagerSlidingTabStrip En mi proyecto y estoy mostrando datos en fragmentos. Es una gran biblioteca que funciona muy bien. Cada fragmento consta de conferencias de un erudito que se cargan desde un servicio web. El código para acceder al servicio web está enonCreateView Método del Fragmento. Actualmente, todos los datos del fragmento se cargan al mismo tiempo cuando se agregan aViewPager. Me preguntaba si hay alguna forma de cargar los datos del Fragmento solo cuando un usuario hace clic / desliza hacia una pestaña específica. No todo a la vez.

El código actual es bastante estándar, tomé la ayuda del ejemplo proporcionado [solución de Android].1

El adaptador de buscapersonas es el siguiente:

public class ScholarDetailPagerAdapter extends FragmentPagerAdapter {

    private final String[] TITLES = { "Scholar Info", "Lectures"};
    Scholar _scholar;

    public ScholarDetailPagerAdapter(FragmentManager fm, Scholar scholar) {
        super(fm);
        _scholar = scholar;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return TITLES[position];
    }

    @Override
    public Fragment getItem(int arg0) {
        if(arg0 == 0)
            return ScholarsInfoFragment.netInstance(_scholar.Name, _scholar.Information, _scholar.ThumbnailUrl);
        else
            return ScholarLecturesFragment.newInstance(_scholar.ScholarId);
    }

    @Override
    public int getCount() {
        return TITLES.length;
    }

}

Devuelve DOS fragmentos, Info y Clases. El fragmento de conferencias llama a un servicio web para obtener las conferencias de un erudito.

El código de actividad es:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // set the Above View
    setContentView(R.layout.tabbed_view);
    Scholar scholar = getScholar(getIntent());      

    _tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    _pager = (ViewPager) findViewById(R.id.pager);
    _adapter = new ScholarDetailPagerAdapter(getSupportFragmentManager(), scholar);

    _pager.setAdapter(_adapter);

    final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
            .getDisplayMetrics());
    _pager.setPageMargin(pageMargin);

    _tabs.setViewPager(_pager);
} 

Intenté agregar_tabs.setOnPageChangeListener(this); y terminé teniendoonPageSelected(int arg0) en mi actividad también. Pensé que sería fácil ahora. Entonces modifiquépublic Fragment getItem(int arg0) enScholarDetailPagerAdapter arriba y devueltonull En lugar de devolver dos fragmentos. Pero eso levantó una excepción. Pensé que haría vistas vacías en buscapersonas ... pero, por supuesto, estaba equivocado.

Para asegurarme de que Fragmento carga datos cuando se hace clic en su pestaña respectiva y está visible, también he intentado anular sus siguientes eventos y escribí la llamada de carga de datos en ellos:

onResume() No funcionó. Todavía carga datos cuando se agrega en actividad

Intentado anular onHiddenChanged

@Override   
public void onHiddenChanged(boolean hidden) {

    super.onHiddenChanged(hidden);

    if(!hidden){
        loadLectures();
    }

}

Esto tampoco funcionó. No hay datos cargados como si este evento no se disparó en absoluto.

¿Cómo puedo hacer eso? Simplemente quiero cargar un fragmento cuando el usuario hace clic en una pestaña.

Gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta