0
votes

I have MainActivity which adds two tabs namely "tab1", "tab2"; these tabs are fragment. Tab 1 sends server request and tab 2 also send server request when I open MainActivity, server request from both tabs are sent to server. What I want is: when tab1 becomes visible then tab1 should send a server request, and when tab2 gets visible then tab2 will send its server request. How can I do that?

MainActivity:

m_TabLayout = (TabLayout) findViewById(R.id.tab_layout);// finding Id of tablayout
m_ViewPager = (ViewPager) findViewById(R.id.pager);//finding Id of ViewPager
m_TabLayout.addTab(m_TabLayout.newTab().setText("Deals"));// add deal listin tab
m_TabLayout.addTab(m_TabLayout.newTab().setText("Stories"));
m_TabLayout.setTabGravity(TabLayout.GRAVITY_FILL);// setting Gravity of Tab


CDealMainListingPager m_oDealMainScreenPager = new CDealMainListingPager(getSupportFragmentManager(), m_TabLayout.getTabCount());
m_ViewPager.setAdapter(m_oDealMainScreenPager);// adiing adapter to ViewPager
m_ViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(m_TabLayout));// performing action of page changing
m_TabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        m_ViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});
1

1 Answers

0
votes

Try this

int currentTab = 1;

m_ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                currentTab = viewPager.getCurrentItem();
                if(currentTab == 1) {
 //                  Tab 1 Server request
                }else{
//                   Tab 2 server request
                    }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });