如何确定用户何时滑到片段活动中的另一个选项卡



>我在Android中使用默认活动,您可以选择"可滚动选项卡+滑动"作为导航类型。滑动后如何确定当前显示哪个选项卡?

我在课堂上试过这样的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
                 ....
            }

但它不起作用,因为此方法onCreateView并不总是在滑动后调用。我想有一些简单的方法可以做到这一点,但我就是找不到它。(另外,如果它可用于 API 8 会非常好)

要知道页面何时更改,您可以使用OnPageChangeListener进行ViewPager。您可以使用 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) {}
});

考虑覆盖片段中的 setUserVisibleHint() 方法。

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

最新更新