android - Fragment 无法转换为 Context(应用程序立即崩溃)
问题描述
我知道以前有很多类似措辞的问题,但对我没有任何帮助。
基本上,我有一个名为 HomeFragment的片段。我想在其中显示一个图像滑块。每个图像都有一个标题和艺术家(TextView)。
这是我得到的错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void androidx.viewpager.widget.ViewPager.setAdapter(androidx.viewpager.widget.PagerAdapter)”
故障线路:
SliderPagerAdapter adapter = new SliderPagerAdapter(getActivity().getApplicationContext(),lstSlides);
sliderpager.setAdapter(adapter);
如果我将 mContext.this 与活动而不是片段一起使用,则该代码有效。正如我在其他问题中经常看到的那样,我尝试使用 getContext() 和 getActivity() ,但我的应用程序立即崩溃了。
HomeFragment.java
public class HomeFragment extends Fragment {
private List<Slide> lstSlides;
private ViewPager sliderpager;
private static final String TAG = "HomeFragment";
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_home,container,false);
//Slider pictures(inside drawable), song names(title) ve artist names(artist)
lstSlides = new ArrayList<>();
lstSlides.add(new Slide(R.drawable.slide1long,"SlideTitle1","SlideArtist1"));
lstSlides.add(new Slide(R.drawable.slide2long,"SlideTitle2","SlideArtist2"));
lstSlides.add(new Slide(R.drawable.slide3long,"SlideTitle3","SlideArtist3"));
lstSlides.add(new Slide(R.drawable.slide4long,"SlideTitle4","SlideArtist4"));
lstSlides.add(new Slide(R.drawable.slide5long,"SlideTitle5","SlideArtist5"));
lstSlides.add(new Slide(R.drawable.slide6long,"SlideTitle6","SlideArtist6"));
lstSlides.add(new Slide(R.drawable.slide7long,"SlideTitle7","SlideArtist7"));
lstSlides.add(new Slide(R.drawable.slide8long,"SlideTitle8","SlideArtist8"));
lstSlides.add(new Slide(R.drawable.slide9long,"SlideTitle9","SlideArtist9"));
lstSlides.add(new Slide(R.drawable.slide10long,"SlideTitle10","SlideArtist10"));
SliderPagerAdapter adapter = new SliderPagerAdapter(getActivity().getApplicationContext(),lstSlides);
sliderpager.setAdapter(adapter);
return view;
}}
SliderPagerAdapter.java
public class SliderPagerAdapter extends PagerAdapter {
private Context mContext;
private List <Slide> mList;
public SliderPagerAdapter(Context mContext, List<Slide> mList) {
this.mContext=mContext;
this.mList=mList;
}
//Slider information artist,title,pictures etc
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View slideLayout = inflater.inflate(R.layout.slide_item,null);
ImageView slideImg = slideLayout.findViewById(R.id.slide_img);
TextView slideText = slideLayout.findViewById((R.id.slide_title));
TextView slideText2 = slideLayout.findViewById(R.id.slide_artist);
slideImg.setImageResource(mList.get(position).getImage());
slideText.setText(mList.get(position).getTitle());
slideText2.setText(mList.get(position).getArtist());
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);
}
}
幻灯片.java
public class Slide {
private int Image;
private String Title;
private String Artist;
public Slide(int image, String title, String artist) {
Image = image;
Title = title;
Artist = artist;
}
public int getImage() {
return Image;
}
public void setImage(int image) {
Image = image;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getArtist() {
return Artist;
}
public void setArtist(String artist) {
Artist = artist;
}
}
我怎样才能解决这个问题?
解决方案
推荐阅读
- computer-vision - 使用 CustomLayerMapping.xml 转换模型后,如何让 openvino 推理引擎回退到系统 caffe?
- hive - 使用 hive,如何同时获得 iso 周和年?
- python - 使用 Tensorflow 的策略梯度来训练乒乓游戏代理的问题
- c# - 列表框导出到图片
- python - 对象数据类型python中的矩阵
- sql - SQL Server 2012:DateDiff 在 where 子句中不包括周末
- debugging - Volttron 消息调试器没有路由到主机?
- c++ - TLS 握手成功后,服务器关闭并显示错误 SSL 例程:SSL3_GET_RECORD:wrong version number
- 4d-database - 如何在动态 4D 形式的表单对象变量的“事件”属性内链接字符串数组中的事件后,在代码中捕获事件?
- javascript - Facebook Javascript API fan_count