嗨,我尝试用ViewPager创建图像滑块,我认为在ViewPagerAdapter.java中遇到了麻烦。我还是关于android studio的新手,我需要帮助。
这是代码
11-25 16:53:16.683 24857-24857 / com.labs.penjualan.project.penjualan E / Android运行时:致命异常:主要
过程:com.labs.penjualan.project.penjualan,PID:24857
java.lang.NullPointerException:尝试调用虚拟方法
在空对象引用上的'java.lang.Object android.content.Context.getSystemService(java.lang.String)' 在com.labs.penjualan.project.penjualan.ViewPagerAdapter.instantiateItem(ViewPagerAdapter.java:38)
package com.labs.penjualan.project.penjualan;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class ViewPagerAdapter extends PagerAdapter {
private Context context;
private LayoutInflater layoutInflater;
private Integer [] images = {R.drawable.s1,R.drawable.s2,R.drawable.s3};
// public ViewPagerAdapter(Context context) {
// this.context = context;
// }
public ViewPagerAdapter(HomeFragment homeFragment) {
this.context = context;
}
@Override
public int getCount() {
return images.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // I THINK THIS LINE ERROR
View view = layoutInflater.inflate(R.layout.custom_layout, null);
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
imageView.setImageResource(images[position]);
ViewPager vp = (ViewPager) container;
vp.addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
ViewPager vp = (ViewPager) container;
View view = (View) object;
vp.removeView(view);
}
}
答案 0 :(得分:0)
您会收到NullPointerException,因为没有Context
,context
字段没有指向任何内容,或者为null!
那是因为您注释了构造函数,在这里您从参数中获得了Context
并将其设置为您的字段。您用HomeFragment替换了它,但是HomeFragment不是上下文(并且您不在代码中的某个地方使用它)。
因此取消注释以前的构造函数以使用Context。
public ViewPagerAdapter(Context context) {
this.context = context;
}