为什么第18行这句会报错空对象呢,求大神解答一下

public class zhujiemianActivity extends AppCompatActivity implements RecyAdapter.OnItemClickListener{
    public  String TAG = "zhuejiamianActivity";
    private ImageView img;
    private RecyclerView recy;
    private Integer[] mImgIds={R.drawable.dggj1,R.drawable.dggj2,R.drawable.dggj3};
    private List<Integer> data;
    private RecyAdapter recyAdapter;
    private Handler mHandler=new Handler();
    private LinearLayoutManager layoutManager;
    private int oldItem=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zhujiemian2);
        init();
        initdata();
        initRecy();
        img.setImageResource(data.get(0));
        recyAdapter.setOnItemClickListener(this);
    }
    public void init()
    {
        img=findViewById(R.id.gundongimage);
        recy=findViewById(R.id.gundong);
    }
    Runnable runnable=new Runnable() {
       @Override
       public void run() {
           recy.scrollBy(3, 0);
           int first= layoutManager.findFirstVisibleItemPosition();
           if(first!=oldItem&&first>0)
           {
               oldItem=first;
               img.setImageResource(data.get(oldItem%data.size()));
           }
           Log.e(TAG,"run:first:"+first);
           mHandler.postDelayed(runnable,10);
       }
   };
    //配置适配器
    private void initRecy()
    {
        recyAdapter=new RecyAdapter(this,data);
        layoutManager =new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recy.setLayoutManager(layoutManager);
        recy.setAdapter(recyAdapter);
    }
    private void initdata()
    {
        data=new ArrayList<>();
        for (int i=0;i<mImgIds.length;i++)
        {
            data.add(mImgIds[i]);
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        mHandler.postDelayed(runnable,10);
    }
    @Override
    protected void onStop() {
        super.onStop();
        mHandler.removeCallbacks(runnable);
    }


    @Override
    public void onItemClick(View view, int tag) {
        Toast.makeText(this,"第"+tag+"张图片被点击了", Toast.LENGTH_SHORT).show();
    }
}

 

23行能查到数据吗,断点看下,那个对象是空,是img还是data。

这是报错的内容

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference

23行能查到啊

 

看你这截图是 data 为空了,最好是 img 跟data 都加非空判断,避免出现空指针

是不是imageview的id取错了,导致findviewbyid的时候,获取对应的控件失败

明显是data.get(0)的值是空,你可以判断一下再赋值

该错误说明,img对象为空,检查一下,布局文件中的ImageView元素,为什么 img=findViewById(R.id.gundongimage); 获取不到该ImageView对象