user5157559
user5157559

Reputation:

PagerAdapter is abstract; cannot be instantiate

I am trying to create tabs in my android activity,I have done this before,used the same type implementation for this method also

Now in my Activity class in this line final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); I have an error PagerAdapter is abstract; cannot be instantiate I don't know what does that mean

Here is my Activity class code

package com.example.rimapps.icar_iisr_turmeric.view;

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;

import com.example.rimapps.icar_iisr_turmeric.R;

public class PestsHome extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pests_home);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.addTab(tabLayout.newTab().setText(R.string.diseases));
        tabLayout.addTab(tabLayout.newTab().setText(R.string.insectpescts));
        tabLayout.addTab(tabLayout.newTab().setText(R.string.bioagents));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        final PagerAdapter adapter = new PagerAdapter
                (getSupportFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
    }

    }

Then there is another thing in my Adapter class I cannot return my final tab "tab3" it says Required android.support.v4.app.Fragment; but i have imported that already

here is my adapter class code

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

import com.example.rimapps.icar_iisr_turmeric.view.TabFragment1;
import com.example.rimapps.icar_iisr_turmeric.view.TabFragment2;
import com.example.rimapps.icar_iisr_turmeric.view.TabFragment3;


public class PagerAdapter extends FragmentStatePagerAdapter {
    int mNumOfTabs;

    public PagerAdapter(FragmentManager fm, int NumOfTabs) {
        super(fm);
        this.mNumOfTabs = NumOfTabs;
    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                TabFragment1 tab1 = new TabFragment1();
                return tab1;
            case 1:
                TabFragment2 tab2 = new TabFragment2();
                return tab2;
            case 2:
                TabFragment3 tab3 = new TabFragment3();
                return tab3;
            default:
                return null;
        }
    }

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

please help

Upvotes: 0

Views: 3552

Answers (1)

Pavneet_Singh
Pavneet_Singh

Reputation: 37404

Issue is, you have named you customize adapter as PagerAdapter which is also an existing API in android PagerAdapter.

So remove the import

import android.support.v4.view.PagerAdapter;

and carefully import your pageradapter package

Note : It's recommended to avoid naming your classes same as android API

Upvotes: 3

Related Questions