Como carregar dados de fragmento somente quando sua guia é clicada em PagerSlidingTabStrip

estou usandoPagerSlidingTabStrip no meu projeto e estou mostrando dados em fragmentos. É uma ótima biblioteca que funciona muito bem. Cada fragmento consiste em palestras de um acadêmico que são carregados de um serviço da web. O código para acessar o serviço da Web está emonCreateView método do fragmento. Atualmente, todos os dados do fragmento são carregados ao mesmo tempo em que são adicionadosViewPager. Eu queria saber se existe alguma maneira de carregar os dados do fragmento somente quando um usuário clica / desliza para uma guia específica. Não tudo de cada vez.

Código atual é bastante normal, tomei ajuda do exemplo fornecido [solução android].1

O adaptador de pager é o seguinte:

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;
    }

}

Retorna dois fragmentos, informações e palestras. O fragmento de palestras chama um serviço da web para obter as palestras de um acadêmico.

O código de atividade é:

@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);
} 

Tentei adicionar_tabs.setOnPageChangeListener(this); e acabou tendoonPageSelected(int arg0) na minha atividade também. Eu pensei que seria fácil agora. Então eu modifiqueipublic Fragment getItem(int arg0) emScholarDetailPagerAdapter acima e retornounull em vez de retornar dois fragmentos. Mas isso levantou uma exceção. Eu pensei que iria renderizar vistas vazias no pager .. mas é claro que eu estava errado.

Para garantir que o Fragment carregue dados quando sua respectiva guia for clicada e esteja visível, também tentei substituir seus eventos a seguir e escrevi a chamada de carregamento de dados neles:

onResume() Não funcionou. Ainda carrega dados quando adicionados em atividade

Tentei substituir onHiddenChanged

@Override   
public void onHiddenChanged(boolean hidden) {

    super.onHiddenChanged(hidden);

    if(!hidden){
        loadLectures();
    }

}

Isso não funcionou também. Nenhum dado carregado como se este evento não fosse acionado de todo.

Como faço isso? Eu simplesmente quero carregar um fragmento quando o usuário clica em uma guia.

desde já, obrigado

questionAnswers(2)

yourAnswerToTheQuestion