2017-08-12 4 views
1

créer un pager vue personnalisée comme ceci:setCurrentItem() sur 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; 
} 

}

et utilisé sur fragment principal:

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

dans le setCurrentItem Je dois quel numéro à utiliser jusqu'à ce que je ne reçois pas une erreur nullpoiner? Je veux que la classe NotificationFragment() est d'abord démarrer sur la vue pager

Modifier

whit mViewPager.setCurrentItem (-1); J'ai eu une erreur de coup:

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)... 
+0

pourquoi vous définissez '-2' –

+0

Afficher le journal des erreurs s'il vous plaît –

Répondre

1

Lire setCurrentItem

Set the currently selected page. If the ViewPager has already been through its first layout with its current adapter there will be a smooth animated transition between the current item and the specified item.

Problème

mViewPager.setCurrentItem(-1); 

Ne pas définir -1 or -2. l'index commence à 0.

EDIT

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

} 
return fragment; 

POURQUOI 1,2,3,4 BLANK. Vous devriez essayer avec

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

} 
return fragment; 

mViewPager.setCurrentItem (0);

+0

avec mViewPager.setCurrentItem (0) Je suis au-dessus error.1,2 et .. est vide parce que je remplis cela après avoir résolu ce problème –

+0

évidemment je dois remplir 1, 2, 3, 4. –

+0

ma question est, avant que je cours ce code je dois remplir l'autre déclaration de commutateur? –

0

Depuis NotificationFragment a la première position. l'indice 0. Il est

Par conséquent, il devrait être quelque chose comme mViewPager.setCurrentItem(0);

+0

avec mViewPager.setCurrentItem (0) je suis arrivé au-dessus de l'erreur –