英文:
PagerAdapter is abstract; cannot be instantiated error. How can i fix it?
问题
我的MainActivity.java文件夹内容如下。我已经导入了所有需要的部分,但是出现了错误“PagerAdapter is abstract; cannot be instantiated”。
public class MainActivity extends AppCompatActivity {
BottomBar bottomBar; //底部导航栏
//用于ViewPager的fragment列表
List<Fragment> fragmentList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//定义ViewPager(用于创建滑动主屏幕并添加相机和消息部分)
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
//将所需的fragment添加到fragment列表中
fragmentList.add(new ViewPager_Camera());
fragmentList.add(new ViewPager_Home());
fragmentList.add(new ViewPager_Message());
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), fragmentList);
pager.setAdapter(adapter);
//定义底部导航栏并启用选择监听功能
bottomBar = (BottomBar) findViewById(R.id.bottom_bar);
}
}
我的PagerAdapter类如下:
public class PagerAdapter extends FragmentPagerAdapter {
//定义fragment列表
List<Fragment> fragmentList = new ArrayList<>();
public PagerAdapter(@NonNull FragmentManager fm, List<Fragment> fragList) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
this.fragmentList = fragList;
}
@NonNull
@Override
public Fragment getItem(int position) {
//从列表中获取对应位置的fragment
return fragmentList.get(position);
}
@Override
public int getCount() {
//显示fragment列表的大小
return fragmentList.size();
}
}
如何修复这个错误?我尝试过更改适配器的名称,但仍然出现错误。问题可能出现在使用的方法中吗?
英文:
My MainActivity.Java folder like that. I did all import but It gives error "PagerAdapter is abstract; cannot be instantiated"
public class MainActivity extends AppCompatActivity {
BottomBar bottomBar; //Bottomnavigationbar
//ViewPager için oluşturulan ListAdapterde ki fragmentList
List<Fragment> fragmentList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//viewpager tanımlanması (ana ekrandan kaydırıp kamera ve mesajlaşma kısımlarının oluşturulması için)
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
//fragmentlist'e gerekli fragmentlerin eklenmesi
fragmentList.add(new ViewPager_Camera());
fragmentList.add(new ViewPager_Home());
fragmentList.add(new ViewPager_Message());
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(),fragmentList);
pager.setAdapter(adapter);
//Bottombar tanımlanması ve selectlistener özelliği aktif edilmesi
bottomBar = (BottomBar) findViewById(R.id.bottom_bar);
My PagerAdapter is like that
public class PagerAdapter extends FragmentPagerAdapter {
//fragmentList tanımlanması
List<Fragment> fragmentList = new ArrayList<>();
public PagerAdapter(@NonNull FragmentManager fm, int behavior,List<Fragment>fragList) {
super(fm, behavior);
this.fragmentList = fragList;
}
@NonNull
@Override
public Fragment getItem(int position) {
//hangi fragment açıksa listeden de o fragment isteniyor
return fragmentList.get(position);
}
@Override
public int getCount() {
//fragmetlist boyutu kadar fragment oldugunu gösteriyor
return fragmentList.size();
}
}
How can I fix this error? I tryed to change adapter name but still had error. May the problem be in the methos using?
答案1
得分: 0
问题在于你正在扩展的类,FragmentPagerAdapter,是一个带有抽象方法的抽象类,而你没有进行覆盖重写。由于你的类仍然至少有一个抽象方法,它也是一个抽象类,因此无法被实例化。
在基类中查找其他抽象方法,并对它们进行覆盖重写。
英文:
The problem is that the class you're extending, FragmentPagerAdapter, is an abstract class with abstract methods which you are not overriding. Since your class still has at least one abstract method, it is an abstract class and therefore cannot be instantiated.
Look in the base class for other abstract methods, and override those, too.
答案2
得分: 0
PagerAdapter 也是一个框架类(androidx.viewpager.widget.PagerAdapter),它是抽象的。您的 MainActivity 可能正在使用错误的类。
将您的 PagerAdapter 类重命名为其他名称,然后查看(比如 MyPagerAdapter)。
英文:
PagerAdapter is also a framework class (androidx.viewpager.widget.PagerAdapter) which is abstract. Your MainActivity is probably using the wrong class.
Rename your PagerAdapter class to something else and see (MyPagerAdapter?).
专注分享java语言的经验与见解,让所有开发者获益!
评论