【问题标题】:ViewPager swipe issue when back press后按时 ViewPager 滑动问题
【发布时间】:2016-08-29 12:52:38
【问题描述】:

这里我试图在查看寻呼机的最后一个位置移动到下一个屏幕。它正在移动。但是当我尝试从最后一个位置向后滑动时,它会移动到下一个屏幕。我需要移动到下一个屏幕仅当在最后一个位置查看寻呼机时。

@Override
public void onPageScrollStateChanged(int state) {       
  //viewpager swipe
  lastPageChange = false;
  int lastIdx = viewPager.getAdapter().getCount() - 1;
  curItem = viewPager.getCurrentItem();
  if (curItem==lastIdx && state==1 && lastPageChange==false ) {
    lastPageChange = true;
    Intent main=new Intent(Top3.this,SkipActivity.class);
    startActivity(main);
    finish();
  } else {
    lastPageChange = false;
  }    
}

【问题讨论】:

  • if 语句中的 lastPageChange==false 部分始终为 TRUE。您在函数开头将 false 分配给 lastPageChange 并且 if 语句中的检查是无用的。

标签: android android-viewpager


【解决方案1】:

当您看到最后一个位置然后再次向前滑动时,此答案是您的查看器,它将转到下一个活动。 ViewPager.OnPageChangeListener pagerListener = new ViewPager.OnPageChangeListener() { boolean lastPageChange = false;

                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                    int lastIdx = book_adapt.getCount() - 1;

                    Log.d("Testing", "pos:" + position);
                    if (lastPageChange && position == lastIdx){
                        Intent main = new Intent(Top3.this, SkipActivity.class);
                        startActivity(main);
                        finish();
                    }

                }

                @Override
                public void onPageSelected(int position) {
                    // pgText.setCurrentItem(i/2);
                    viewPagerSet(position);
                }

                @Override
                public void onPageScrollStateChanged(int state) {
                    int lastIdx = book_adapt.getCount() - 1;

                    int curItem = viewPager.getCurrentItem();
                    if (curItem == lastIdx /*&& lastPos==lastIdx*/ && state == 1)
                        lastPageChange = true;
                    else lastPageChange = false;
                }
            };

            viewPager.addOnPageChangeListener(pagerListener);

【讨论】:

    【解决方案2】:

    尝试从 viewPager.getAdapter().getCount()

    中删除 1

    我想下面的事情正在发生 - 假设您的 viewPager 中有 5 个标签。你在最后一个标签。您向后滑动,viewPager.getCurrentItem() 将返回 4。同时您有 viewPager.getAdapter().getCount() - 1 将再次返回 4( 5 个标签 - 1)。 if 语句中的条件将始终为 True,因此将加载新活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多