2015-11-01 53 views
0

我使用NagivationDrawer以及ViewPager为我的应用程序。当用户在抽屉中选择一个项目时,视图寻呼机将相应地设置片段。为什么在mViewPager.setCurrentItem(value)处传递的值在FragmentStatePagerAdapter的getItem(int value)方法中增加或减少

在MainActivity类别

.... 
@Override 
    public void onNavigationDrawerItemSelected(int position) { 

     Log.d("POSITION", "======================================="); 
     Log.d("POSITION ItemSelected", position +""); 


     if(mViewPager != null){ 
      mViewPager.setCurrentItem(position); 

     } 

    } 
...... 

我ViewPagerAdapter类是

public class LessonPageAdapter extends FragmentStatePagerAdapter { 

    public LessonPageAdapter(FragmentManager fm) { 

     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment = new LessonFragment(); 
     Bundle args = new Bundle(); 
     Log.d("POSITION PagerAdapter", position +""); 
     args.putInt(LessonFragment.ARG_SECTION_NUMBER, position); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return 7; 
    } 
} 

我发现的position主叫mViewPager.setCurrentItem(position)onNavigationDrawerItemSelected(int position)方法是不同的,当我传递值从(递增或递减) position的值我得到getItem(int position)方法FragmentStatePagerAdapter

11-01 12:31:59.706 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:31:59.706 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 1 
11-01 12:31:59.706 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 2 
11-01 12:32:11.089 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:32:11.089 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 2 
11-01 12:32:11.090 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 3 
11-01 12:32:18.586 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:32:18.586 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 3 
11-01 12:32:18.586 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 4 
11-01 12:32:29.474 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:32:29.474 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 4 
11-01 12:32:29.475 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 5 
11-01 12:32:35.476 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:32:35.477 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 5 
11-01 12:32:35.477 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 6 
11-01 12:32:43.704 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:32:43.704 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 6 
11-01 12:32:51.287 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:32:51.287 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 5 
11-01 12:32:51.287 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 4 
11-01 12:33:00.529 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:33:00.530 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 4 
11-01 12:33:00.530 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 3 
11-01 12:33:09.084 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION﹕ ======================================= 
11-01 12:33:09.084 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION ItemSelected﹕ 3 
11-01 12:33:09.084 8913-8913/com.example.khaino.drawerandswipedemo D/POSITION PagerAdapter﹕ 2 

有谁能告诉我原因吗?解决办法是什么?

回答

1

您的应用程序工作正常吗?在viewPager中,不仅加载当前页面,还加载左侧和右侧页面,以使滚动看起来无缝。所以调用getItem()来预载下一页,你的日志是完全正确的。

您还可以使用viewPager.setOffscreenPageLimit(int)设置要预加载的每一面上的页数。默认值和最小值是1.

+0

谢谢......现在我知道为什么onNavigationDrawerItemSelected(int position)方法和getItem(int position)方法中'position'的值是不同的...... –

相关问题