【问题标题】:PagerAdapter is abstract; cannot be instantiatePagerAdapter 是抽象的;不能实例化
【发布时间】:2018-01-27 17:24:31
【问题描述】:

我正在尝试在我的 android 活动中创建选项卡,我之前已经这样做过,对此方法也使用了相同的类型实现

现在在我的 Activity 类中这一行 final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 我有一个错误 PagerAdapter 是抽象的;不能实例化我不知道这是什么意思

这是我的 Activity 类代码

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) {

            }
        });
    }

    }

然后在我的适配器类中有另一件事我无法返回我的最终选项卡“tab3”它说 Required android.support.v4.app.Fragment; 但我已经导入了

这是我的适配器类代码

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

请帮忙

【问题讨论】:

    标签: android android-fragments tabs


    【解决方案1】:

    问题是,您已将自定义适配器命名为 PagerAdapter,这也是 android PagerAdapter 中现有的 API。

    所以删除导入

    import android.support.v4.view.PagerAdapter;
    

    并仔细导入您的 pageradapter 包

    注意:建议避免将您的类命名为与 android API 相同的名称

    【讨论】:

      猜你喜欢
      • 2013-08-23
      • 2010-09-22
      • 2016-09-21
      • 1970-01-01
      • 2020-04-29
      • 2013-11-21
      • 1970-01-01
      • 2013-03-07
      相关资源
      最近更新 更多