Question

I am using http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/ to make Tab bar.

I have also 3 tab first and the second Tab view contains a List view and third on e is Settings.
Settings Contain Reload button. When I clicked the Reload Button I want to move to First Tab.

How can I do this ?

Was it helpful?

Solution

Make following changes:

  1. Pass the viewPager reference to your adapter and from adapter to your fragment:

     public class TabsPagerAdapter extends FragmentPagerAdapter {
        ViewPager viewPager;
        public TabsPagerAdapter(FragmentManager fm,ViewPager viewPager) {
            super(fm);
            this.viewPager=viewPager;  
        }
    
        @Override
        public Fragment getItem(int index) {
    
            switch (index) {
            case 0:
                // Top Rated fragment activity
                return new TopRatedFragment(viewPager);
            case 1:
                // Games fragment activity
                return new GamesFragment(viewPager);
            case 2:
                // Movies fragment activity
                return new MoviesFragment(viewPager);
            }
    
            return null;
        }
    
        @Override
        public int getCount() {
            // get item count - equal to number of tabs
            return 3;
        }
    
    }
    
  2. In fragment on click of button call set selection on view pager object:

     public class MoviesFragment extends Fragment {
            private ViewPager viewPager;
            public  MoviesFragment (ViewPager viewPager;){
              this.viewPager=viewPager;
            }
            @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
    
            View rootView = inflater.inflate(R.layout.fragment_movies, container, false);
            rootView.findViewById(<your button>).setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    viewPager.setCurrentItem(0);
    
                }
            }); 
            return rootView;
        }
    
    }
    

OTHER TIPS

I know its quite late ....maybe it can help someone else...creating a constructor in fragments is not supported..so instead of passing viewpager as constructor.. we can write in the fragment on button click:

  import android.os.Bundle;
  import android.support.v4.app.Fragment;
  import android.support.v4.view.ViewPager;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.TextView;

   /**
   * Created by medha singh on 6/17/2016.
    */
    public class Fragment4 extends Fragment {


   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,                  Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    final View view1 = inflater.inflate(R.layout.new_lead2, container, false);
    TextView tv=(TextView)view1.findViewById(R.id.hardware);
    final ViewPager pager=   (ViewPager)getActivity().findViewById(R.id.pager2);
    tv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
         pager.setCurrentItem(1);


        }
    });
    return view1;
   }

   }

So getactivity() is the solution: i got it from here: How to go other Tabs by clicking on a Button from the current Tab in Android?

Do this:

btn.setOnClickListener(new OnClickListener()
{
onClick(View v)
{
//Reload the data
tabHost.setCurrentTab(/*destination-tab-id*/);
}
}
)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top