1

I'm using default Activity in Android where you choose "Scrollable tabs + Swipe" as Navigation type. How can I determine which tab is currently showing, after sliding?

I tried it like this in class DummySectionFragment

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_starting_dummy,
                    container, false);
            TextView dummyTextView = (TextView) rootView
                    .findViewById(R.id.section_label);
            dummyTextView.setText(Integer.toString(getArguments().getInt(
                    ARG_SECTION_NUMBER)));


            switch(getArguments().getInt(ARG_SECTION_NUMBER))
            {
                case 1: // do something
                 ....
            }

but it's not working, becuase this method onCreateView is not being called always after sliding. I guess there is some easy way to do it, but I just can't find it. (also, it would be very good if it would be available for API 8)

Tommz
  • 3,393
  • 7
  • 32
  • 44
  • possible duplicate of [Android ViewPager get the current View](http://stackoverflow.com/questions/12854783/android-viewpager-get-the-current-view) – Anid Monsur Feb 14 '14 at 02:01
  • I need some method which I will know that will be called after sliding so I can do something. This I need to call and to ask, but I need method which will be invoked after sliding. – Tommz Feb 14 '14 at 02:08
  • Question is not: "How to determine WHICH slide is it, but WHEN user slides" – Tommz Feb 14 '14 at 02:10
  • I think you'll be interested with [`TabHost.OnTabChangeListener`?](http://developer.android.com/reference/android/widget/TabHost.OnTabChangeListener.html) – Andrew T. Feb 14 '14 at 02:15

2 Answers2

1

To know when the page is being changed, you can use an OnPageChangeListener for the ViewPager. You can set this by using setOnPageChangeListener().

vpPager.setOnPageChangeListener(new OnPageChangeListener() {

    // This method will be invoked when a new page becomes selected.
    @Override
    public void onPageSelected(int position) {}

    // This method will be invoked when the current page is scrolled
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    // Called when the scroll state changes: 
    // SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
    @Override
    public void onPageScrollStateChanged(int state) {}
});
Anid Monsur
  • 4,538
  • 1
  • 17
  • 24
0

Consider overiding the setUserVisibleHint() method in your fragment.

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        Log.d(DEBUG_TAG, "Fragment is visiable");
        // do something you want
    }
}
J Jiang
  • 1,452
  • 10
  • 14