ViewPager上的setCurrentItem()

时间:2017-08-12 05:33:37

标签: android android-viewpager

我创建了一个这样的自定义视图寻呼机:

public class TaskPagerAdapter extends FragmentStatePagerAdapter {

public TaskPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    Fragment fragment = null;

    switch (position) {
        case 0:
            fragment = new NotificationFragment();
            break;
        case 1:
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            break;

    }
    return fragment;
}

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


@Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}

}

并用于主片段:

        mPagerAdapter = new TaskPagerAdapter(getFragmentManager());
    mViewPager.setAdapter(mPagerAdapter);
    mViewPager.setCurrentItem(-2);
setCurrentItem 中的

我必须使用哪个号码,直到我没有得到nullpoiner错误?我希望NotificationFragment()类首先在view pager上启动

修改

whit mViewPager.setCurrentItem(-1);我得到了打击错误:

 Process: safarayaneh.com.anotify.debug, PID: 21484
                                                                           java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setMenuVisibility(boolean)' on a null object reference
                                                                               at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePagerAdapter.java:120)
                                                                               at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1034)
                                                                               at android.support.v4.view.ViewPager.populate(ViewPager.java:1248)
                                                                               at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)
                                                                               at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642)
                                                                               at android.view.View.measure(View.java:18788)
                                                                               at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1028)...

2 个答案:

答案 0 :(得分:1)

阅读 setCurrentItem

  

设置当前选择的页面。如果ViewPager已经存在   通过其当前适配器的第一个布局将有一个   当前项和指定项之间的平滑动画过渡   项目

<强>问题

mViewPager.setCurrentItem(-1);

请勿设置 -1 or -2 索引从0开始

修改

switch (position) {
    case 0:
        fragment = new NotificationFragment();
        break;
    case 1:
        break;
    case 2:
        break;
    case 3:
        break;
    case 4:
        break;

}
return fragment;

为什么1,2,3,4 BLANK 。你应该试试

 switch (position) {
    case 0:
        fragment = new NotificationFragment();
        break;

}
return fragment;

<强> mViewPager.setCurrentItem(0);

答案 1 :(得分:0)

由于NotificationFragment具有第一个位置。 它的索引是0。

因此,它应该类似于mViewPager.setCurrentItem(0);