Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行项目时出现NullPointerException_Java_Android_Nullpointerexception_Argumentnullexception - Fatal编程技术网

Java 运行项目时出现NullPointerException

Java 运行项目时出现NullPointerException,java,android,nullpointerexception,argumentnullexception,Java,Android,Nullpointerexception,Argumentnullexception,我的代码有问题,这是错误 java.lang.NullPointerException:尝试调用虚拟方法 空对象上的“void android.widget.ImageView.setImageResource(int)”无效 参考文献 代码中并没有错误,但当运行时有一个null异常错误,我不知道哪里是null,这是错误 在 com.mulazi.submission2.MovieListAdapter.onBindViewHolder(MovieListAdapter.java:57) 在co

我的代码有问题,这是错误

java.lang.NullPointerException:尝试调用虚拟方法 空对象上的“void android.widget.ImageView.setImageResource(int)”无效 参考文献

代码中并没有错误,但当运行时有一个null异常错误,我不知道哪里是null,这是错误

在 com.mulazi.submission2.MovieListAdapter.onBindViewHolder(MovieListAdapter.java:57) 在com.mulazi.submission2.MovieListAdapter.onBindViewHolder(MovieListAdapter.java:20)上

这是我的密码

package com.mulazi.submission2;

import android.content.Intent;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.mulazi.submission2.R;
import com.mulazi.submission2.DetailActivity;
import com.mulazi.submission2.Movie;

import java.util.ArrayList;
import java.util.List;

public class MovieListAdapter extends RecyclerView.Adapter<MovieListAdapter.MovieViewHolder>  {
    private List<Movie> movieList;

    public MovieListAdapter() {
        movieList = new ArrayList<>();
    }

    private void add(Movie item) {
        movieList.add(item);
        notifyItemInserted(movieList.size() - 1);
    }

    public void addAll(List<Movie> movieList) {
        for (Movie movie : movieList) {
            add(movie);
        }
    }

    @NonNull
    @Override
    public MovieViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_movie, parent, false);
        return new MovieViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final MovieViewHolder holder,final int position) {
        final Movie movie = movieList.get(position);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(holder.itemView.getContext(), DetailActivity.class);
                intent.putExtra("key", movie);
                holder.itemView.getContext().startActivity(intent);
            }
        });

        holder.moviePhoto.setImageResource(movie.getPhoto());
        holder.movieName.setText(movie.getName());
        holder.movieDate.setText(movie.getDate());
        holder.movieDesc.setText(movie.getDescription());
        holder.movieDuration.setText(movie.getDuration());
        holder.movieDirector.setText(movie.getDirector());
        holder.movieGenre.setText(movie.getGenre());
    }

    @Override
    public int getItemCount() {
        return movieList.size();
    }

    static class MovieViewHolder extends RecyclerView.ViewHolder {
        ImageView moviePhoto;
        TextView movieName;
        TextView movieDesc;
        TextView movieDate;
        TextView movieDuration;
        TextView movieDirector;
        TextView movieGenre;

        MovieViewHolder(@NonNull View itemView) {
            super(itemView);

            moviePhoto = itemView.findViewById(R.id.img_photo);
            movieName = itemView.findViewById(R.id.txt_name);
            movieDesc = itemView.findViewById(R.id.txt_description);
            movieDate = itemView.findViewById(R.id.txt_date);
            movieDirector = itemView.findViewById(R.id.txt_director);
            movieDuration = itemView.findViewById(R.id.txt_duration);
            movieGenre = itemView.findViewById(R.id.txt_genre);
        }
    }
}
package com.mulazi.submission2;
导入android.content.Intent;
导入android.provider.contacts合同;
导入android.support.annotation.NonNull;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.mulazi.submission2.R;
导入com.mulazi.submission2.DetailActivity;
导入com.mulazi.submission2.Movie;
导入java.util.ArrayList;
导入java.util.List;
公共类MovieListAdapter扩展了RecyclerView.Adapter{
私人名单电影演员;
公共MovieListAdapter(){
movieList=newarraylist();
}
私有无效添加(电影项目){
电影列表。添加(项目);
notifyItemInserted(movieList.size()-1);
}
公共void addAll(列表movieList){
为(电影:影迷){
添加(电影);
}
}
@非空
@凌驾
public MovieViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.list\u item\u movie,parent,false);
返回新的MoviewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(@NonNull final MovieViewHolder,final int位置){
最终电影=movieList.get(位置);
holder.itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent Intent=新的Intent(holder.itemView.getContext(),DetailActivity.class);
意图。putExtra(“钥匙”,电影);
holder.itemView.getContext().startActivity(intent);
}
});
holder.moviePhoto.setImageResource(movie.getPhoto());
holder.movieName.setText(movie.getName());
holder.movieDate.setText(movie.getDate());
holder.movieDesc.setText(movie.getDescription());
holder.movieDuration.setText(movie.getDuration());
holder.movieDirector.setText(movie.getDirector());
holder.movieGenre.setText(movie.getGenre());
}
@凌驾
public int getItemCount(){
返回movieList.size();
}
静态类MovieViewHolder扩展了RecyclerView.ViewHolder{
ImageView电影照片;
TextView movieName;
TextView movieDesc;
TextView电影日期;
TextView电影持续时间;
TextView电影导演;
文本视图电影类型;
MovieViewHolder(@NonNull View itemView){
超级(项目视图);
moviePhoto=itemView.findviewbyd(R.id.img_photo);
movieName=itemView.findviewbyd(R.id.txt\u名称);
movieDesc=itemView.findviewbyd(R.id.txt\u说明);
movieDate=itemView.findviewbyd(R.id.txt\u日期);
movieDirector=itemView.findviewbyd(R.id.txt\u director);
movieDuration=itemView.findviewbyd(R.id.txt\u duration);
movieGenre=itemView.findviewbyd(R.id.txt\u流派);
}
}
}

我希望有人能帮助我解决这个错误,

检查您的布局文件。很可能您忘记在布局中放置img_照片:

moviePhoto = itemView.findViewById(R.id.img_photo);

错误出现在第57行holder.moviePhoto.setImageResource(movie.getPhoto())。此外,错误表明您正在对null对象调用setImageResource(…),这表明holder.moviePhoto为null。@KevinBarron那么我应该怎么做?xml和id之间没有任何错误