web-dev-qa-db-fra.com

java.lang.Class Java.lang.Object.getClass () 'sur une référence d'objet null

J'essaie d'utiliser viewPager avec le tablayout, mais lorsque je règle l'adaptateur avec le pager de vue, l'erreur "Java.lang.NullPointerException: une tentative d'appel de la méthode virtuelle 'Java.lang.Class est déclenchée. une référence d'objet null "Je ne comprends pas pourquoi cette erreur est affichée.

voir le pager set Adapter:

viewPager= (ViewPager) findViewById(R.id.viewPager_id);
  viewPager.setAdapter(newViewPagerAdapterUseThisClass(getSupportFragmentManager(),14));

Adaptateur clss:

class ViewPagerAdapterUseThisClass extends FragmentPagerAdapter {
    int countTabItem;
     ViewPagerAdapterUseThisClass(FragmentManager fm,int contTabItem) {
        super(fm);

        this.countTabItem=contTabItem;
    }

    @Override
    public Fragment getItem(int position) {

        if(position==0){
            EnthusamTab enthusamTab=new EnthusamTab();
            return enthusamTab;
        }

        return null;
    }

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

voir le fichier XML pager:

 <Android.support.v4.view.ViewPager
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_below="@id/tab_layout_id"
            Android:id="@+id/viewPager_id"/>

Journal d'erreur:

Java.lang.NullPointerException: Attempt to invoke virtual method 'Java.lang.Class Java.lang.Object.getClass()' on a null object reference
                                                                                  at Android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.Java:380)
                                                                                  at Android.support.v4.app.BackStackRecord.add(BackStackRecord.Java:375)
                                                                                  at Android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.Java:103)
                                                                                  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:19861)
                                                                                  at Android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.Java:715)
                                                                                  at Android.widget.RelativeLayout.onMeasure(RelativeLayout.Java:461)
                                                                                  at Android.view.View.measure(View.Java:19861)
                                                                                  at Android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.Java:1081)
                                                                                  at Android.view.View.measure(View.Java:19861)
                                                                                  at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:6083)
                                                                                  at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:185)
                                                                                  at Android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.Java:139)
                                                                                  at Android.view.View.measure(View.Java:19861)
                                                                                  at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:6083)
                                                                                  at Android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.Java:1464)
                                                                                  at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:758)
                                                                                  at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:640)
                                                                                  at Android.view.View.measure(View.Java:19861)
                                                                                  at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:6083)
                                                                                  at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:185)
                                                                                  at Android.view.View.measure(View.Java:19861)
                                                                                  at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:6083)
                                                                                  at Android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.Java:1464)
                                                                                  at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:758)
                                                                                  at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:640)
                                                                                  at Android.view.View.measure(View.Java:19861)
                                                                                  at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:6083)
                                                                                  at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:185)
                                                                                  at com.Android.internal.policy.DecorView.onMeasure(DecorView.Java:689)
                                                                                  at Android.view.View.measure(View.Java:19861)
                                                                                  at Android.view.ViewRootImpl.performMeasure(ViewRootImpl.Java:2275)
                                                                                  at Android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.Java:1366)
                                                                                  at Android.view.ViewRootImpl.performTraversals(ViewRootImpl.Java:1619)
                                                                                  at Android.view.ViewRootImpl.doTraversal(ViewRootImpl.Java:1254)
                                                                                  at Android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.Java:6343)
                                                                                  at Android.view.Choreographer$CallbackRecord.run(Choreographer.Java:874)
                                                                                  at Android.view.Choreographer.doCallbacks(Choreographer.Java:686)
                                                                                  at Android.view.Choreographer.doFrame(Choreographer.Java:621)
                                                                                  at Android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.Java:860)
                                                                                  at Android.os.Handler.handleCallback(Handler.Java:751)
                                                                                  at Android.os.Handler.dispatchMessage(Handler.Java:95)
                                                                                  at Android.os.Looper.loop(Looper.Java:154)
                                                                                  at Android.app.ActivityThread.main(ActivityThread.Java:6126)
                                                                                  at Java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:886)
                                                                                  at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:776)
19
xyz rety

Cette exception se produit lorsque vous retournez la méthode null à getItem(int position) de PagerAdapter.

Vous devez définir une valeur de retour (n) à la méthode getCount() et renvoyer une méthode Fragment à getItem(int position) pour toutes les positions (0 .. n-1). 

Par exemple, si vous renvoyez 3 de la méthode getCount(), vous devez renvoyer une variable Fragment non nulle pour les positions 0, 1 et 2 à la méthode getItem(int position). Si vous renvoyez une valeur nulle pour la position 0, 1 ou 2, vous obtiendrez: 

Java.lang.NullPointerException: tentative d'appeler une méthode virtuelle 'Java.lang.Class Java.lang.Object.getClass ()' sur un objet null référence

private static class MyPagerAdapter extends FragmentPagerAdapter {
    ...

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new XFragment();
            case 1:
                return new YFragment();
            case 2:
                return new ZFragment();
            default:
                return null; // Problem occurs at this condition!
        }
    }
}
38
Devrim

Cette erreur survient généralement lorsque vous avez peu de fragments à retourner que le nombre spécifié. Comme par exemple, return count = 3 et vous renvoyez null en deuxième position. .__ Veuillez noter que count est un index basé sur zéro.

9
BYISHIMO Audace

Retour pour tous les comptes. Essaye ça:

Override
    public Fragment getItem(int position) {
            EnthusamTab enthusamTab=new EnthusamTab();
            return enthusamTab;

    }
3
Pushpendra

Selon ce que je vois, vous retournez null dans cette méthode:

@Override
    public Fragment getItem(int position) {

        if(position==0){
            EnthusamTab enthusamTab=new EnthusamTab();
            return enthusamTab;
        }

        return null;
    }
2

Un problème est survenu pour retourner null dans la fonction de décompte de fragments

 @Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return new XFragment();
        case 1:
            return new YFragment();
        case 2:
            return new ZFragment();
        default:
            return null; // Problem occurs at this condition!
    }
}

Ici le support externe se produit une erreur.

La réponse mentionnée ci-dessus est donc correcte et fonctionne.

public Fragment getItem(int position) {
    if (position == 0) {

        Tab1 tab1 = new Tab1();
        return tab1;
    }
    if (position == 2) {
        Tab2 tab2 = new Tab2();
        return tab2;
    } else {
        Tab3 tab3 = new Tab3();
        return tab3;
    }

}

c'est la bonne réponse.

0
Kalpesh A. Nikam