TheMaystro2009
TheMaystro2009

Reputation: 33

viewPager adapter null pointer exception

I got an error while setting adapter, i only have one folder for layouts and to tabs fragments on activity_main , i have searched in many websites but no results. Please help!

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    context = this;
    mTitle = getTitle();
    navMenuTitle = getResources().getStringArray(R.array.titles);

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter); //Null Pointer Exception

    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
            getSupportActionBar().setTitle(navMenuTitle[position]);
        }
    });

this is the SectionAdapter

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        switch(position){
        case 0:
        return MainGenFragment.newInstance(position + 1);
        case 1:
            return new FragmentMyPwd();
        }
        return null;

    }

    @Override
    public int getCount() {
        // Show 3 total pages. Now Changed to 2.
        return 2;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
            case 0:
                return getString(R.string.title_section1).toUpperCase(l);
            case 1:
                return getString(R.string.title_section2).toUpperCase(l);
            //case 2:
                //return getString(R.string.title_section3).toUpperCase(l);
        }
        return null;
    }
}

Upvotes: 0

Views: 911

Answers (1)

Dan Harms
Dan Harms

Reputation: 4840

You need to add setContentView(R.layout.yourlayout) in onCreate(). Without that, mViewPager will be null because it is not found with findViewById().

Upvotes: 2

Related Questions