Android onCreateView寻呼机适配器
尝试在空对象引用上调用虚拟方法“void androidx.viewpager.widget.viewpager.setAdapter(androidx.viewpager.widget.PagerAdapter)” 我正在尝试使用android material design实现滑动选项卡布局。但它给了我NullPointerException。以下是我目前的代码: 公共类HomeFragment扩展了片段{Android onCreateView寻呼机适配器,android,android-viewpager,fragment,fragment-oncreateview,Android,Android Viewpager,Fragment,Fragment Oncreateview,尝试在空对象引用上调用虚拟方法“void androidx.viewpager.widget.viewpager.setAdapter(androidx.viewpager.widget.PagerAdapter)” 我正在尝试使用android material design实现滑动选项卡布局。但它给了我NullPointerException。以下是我目前的代码: 公共类HomeFragment扩展了片段{ private HomeViewModel homeViewModel; priva
private HomeViewModel homeViewModel;
private List<Slide> listSlides;
private ViewPager slidePager;
private TabLayout indicator;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
homeViewModel =
ViewModelProviders.of(this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, false);
listSlides = new ArrayList<>();
listSlides.add(new Slide(R.drawable.a, "slide title"));
listSlides.add(new Slide(R.drawable.b, "slide title"));
final SliderPagerAdapter adapter = new SliderPagerAdapter(getContext(), listSlides);
homeViewModel.getText().observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
slidePager.setAdapter(adapter);
}
});
return root;
}
私有HomeViewModel HomeViewModel;
私人名单幻灯片;
专用可视页滑盖;
专用表格布局指示器;
公共视图onCreateView(@NonNull layoutiner充气机,
视图组容器,捆绑包savedInstanceState){
homeViewModel=
ViewModelProviders.of(this.get)(HomeViewModel.class);
视图根=充气机。充气(R.layout.fragment\u home,container,false);
listSlides=新建ArrayList();
添加(新幻灯片(R.drawable.a,“幻灯片标题”);
添加(新幻灯片(R.drawable.b,“幻灯片标题”);
final SliderPagerAdapter=新的SliderPagerAdapter(getContext(),listSlides);
homeViewModel.getText().observe(这是新的观察者(){
@凌驾
公共void onChanged(@Nullable String s){
滑块。设置适配器(适配器);
}
});
返回根;
}
}
公共类SliderPagerAdapter扩展了PagerAdapter{
private Context mText;
private List<Slide> mList;
public SliderPagerAdapter(Context mText, List<Slide> mList) {
this.mText = mText;
this.mList = mList;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) mText.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View slideLayout = inflater.inflate(R.layout.slider_item,null);
ImageView slideImg = slideLayout.findViewById(R.id.slide_img);
TextView slideText= slideLayout.findViewById(R.id.slide_title);
slideImg.setImageResource(mList.get(position).getImage());
slideText.setText(mList.get(position).getTitle());
container.addView(slideLayout);
return slideLayout;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
私有上下文多行文字;
私人名单;
公共SliderPagerAdapter(上下文多行文字、列表多行列表){
this.mText=mText;
this.mList=mList;
}
@非空
@凌驾
公共对象实例化项(@NonNull视图组容器,int位置){
LayoutInflater充气器=(LayoutInflater)mText.getSystemService(Context.LAYOUT\u充气器\u服务);
查看slideLayout=充气机。充气(R.layout.slider\u项,空);
ImageView slideMg=slideLayout.findViewById(R.id.slide\u img);
text视图slideText=slideLayout.findviewbyd(R.id.slide\u title);
setImageResource(mList.get(position.getImage());
slideText.setText(mList.get(position.getTitle());
container.addView(slideLayout);
返回幻灯片;
}
@凌驾
public int getCount(){
返回mList.size();
}
@凌驾
公共布尔值isViewFromObject(@NonNull视图,@NonNull对象){
返回视图==对象;
}
@凌驾
public void destructionItem(@NonNull视图组容器,int位置,@NonNull对象){
container.removeView((视图)对象);
}
}您没有实例化
幻灯片,因此当您尝试设置适配器时,它实际上是一个空对象。您应该在ViewPager
上调用findViewById