Android java.lang.Class java.lang.Object.getClass();关于空对象引用

Android java.lang.Class java.lang.Object.getClass();关于空对象引用,android,xml,nullpointerexception,android-viewpager,Android,Xml,Nullpointerexception,Android Viewpager,我尝试将viewPager与TableLayout一起使用,但当我使用viewPager设置适配器时,我得到错误“java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'java.lang.Class java.lang.Object.getClass()”我不明白为什么会显示此错误 查看寻呼机集适配器: viewPager= (ViewPager) findViewById(R.id.viewPager_id); viewPager.setAdapte

我尝试将viewPager与TableLayout一起使用,但当我使用viewPager设置适配器时,我得到错误“java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'java.lang.Class java.lang.Object.getClass()”我不明白为什么会显示此错误

查看寻呼机集适配器:

viewPager= (ViewPager) findViewById(R.id.viewPager_id);
  viewPager.setAdapter(newViewPagerAdapterUseThisClass(getSupportFragmentManager(),14));
适配器CLS:

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;
    }
}
查看寻呼机xml文件:

 <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"/>

根据我看到的情况,您在该方法中返回null:

@Override
    public Fragment getItem(int position) {

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

        return null;
    }

返回所有计数。试试这个:

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

    }

当您在
getItem(int位置)
method of
PagerAdapter
处返回
null
时,会发生此异常

必须在
getCount()
方法处设置返回值(n),并在
getItem(int位置)
方法处为所有(0..n-1)位置返回
片段

例如,如果从
getCount()
方法返回3,则必须为
getItem(int位置)
方法处的位置0、1和2返回一个非空的
片段。如果为位置0、1或2返回null,则将得到:

java.lang.NullPointerException:尝试调用虚拟方法 空对象上的“java.lang.Class java.lang.Object.getClass()” 参考文献


当返回的片段数少于指定的计数时,通常会出现此错误。例如,返回count=3,在第二个位置返回null。
请注意,count是一个从零开始的索引。

尝试在
getCount
docountofallfragments中这样做:比如1..5

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;
        }

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

只有当您尝试使用方法
getCount()
返回的值大于在选项卡中初始化的值时,才会发生这种类型的异常。
更改返回值。

碎片计数函数中返回null时出现问题

 @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!
    }
}
这里外括号出现错误

因此,上述答案是正确的,而且是有效的

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;
    }

}

答案是正确的。

我出现这个错误是因为我忘了设置break命令。首先检查您的中断操作员

现在我有了这个代码:

@Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new FollowersFragment();
            case 1:
                return new PostsFragment();
            case 2:
                return new ReactsFragment();
            case 3:
                return new StoriesFragment();
            case 4:
                return new FollowersFragment();
            case 5:
                return new FollowersFragment();
            case 6:
                return new FollowersFragment();
        }
        return null;
    }

只需使用下面给出的代码即可。它避免了空错误,运行平稳

@Override
public Fragment getItem(int position) {

      return new Tab1( );
} 

你告诉适配器它有14个项目,但除了位置0之外,所有项目都返回空值。对不起,这是我的错,谢谢@MikeM。问题在这里解决了吗?可能已经晚了,但我想问你怎么知道这是确切的原因?我只是想知道你是怎么知道确切的原因的。日志没有那么大帮助。@Ankur_009 FragmentPagerAdapter.InstanceItem(位于共享日志中)调用getItem方法。如果getItem返回空值,NPE就会发生。我认为根据我的理解,首先要检查Measue()->populate()->addNewItem()->InstanceItem()将调用getItem()。这就是你的思维过程?我对片段进行了空初始化。现在,这与原来的问题有什么关系?请提供更多的上下文我只是有同样的问题,该代码为我工作
@Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new FollowersFragment();
            case 1:
                return new PostsFragment();
            case 2:
                return new ReactsFragment();
            case 3:
                return new StoriesFragment();
            case 4:
                return new FollowersFragment();
            case 5:
                return new FollowersFragment();
            case 6:
                return new FollowersFragment();
        }
        return null;
    }
@Override
public Fragment getItem(int position) {

      return new Tab1( );
}