如何修复"Attempt to invoke virtual method on a null object reference"



每次我尝试运行我的应用程序时,它都会运行,但随后它崩溃,并且我在logcat中收到相同的消息。奇怪的是 2 行(我在代码中添加了注释,其中行是它所指的(。它指的是当它崩溃时我没有碰过它们。代码一直都是这样,因为我继承了在这个应用程序上的工作,它一直都是这样。以下是日志猫消息:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.gabe.politicianspulse.NewsRvAdapter.onBindViewHolder(NewsRvAdapter.java:43)
at com.example.gabe.politicianspulse.NewsRvAdapter.onBindViewHolder(NewsRvAdapter.java:19)
at

public class NewsRvAdapter extends RecyclerView.Adapter<NewsRvAdapter.MyViewHolder> { //this is line 19
private Context context;
private List<NewsItem> newsList;
//default constructor
public NewsRvAdapter(){}
public NewsRvAdapter(List<NewsItem> newsList, Context context){
this.newsList = newsList;
this.context = context;
}
@NonNull
@Override
public NewsRvAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view;
LayoutInflater layoutInflater = LayoutInflater.from(context);
view = layoutInflater.inflate(R.layout.news_card, viewGroup, false);
final MyViewHolder viewHolder = new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull final NewsRvAdapter.MyViewHolder myViewHolder, int i) {
myViewHolder.title.setText(newsList.get(i).getTitle());
myViewHolder.description.setText(newsList.get(i).getDescription());//this line 43 
myViewHolder.date.setText(newsList.get(i).getDate());
//Load image URL using Picasso
Picasso.get()
.load(newsList.get(i).getImageUrl())
.centerCrop()
.fit()
.into(myViewHolder.photoUrl);
//on click listener that opens url in webview
myViewHolder.photoUrl.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
String link = newsList.get(myViewHolder.getAdapterPosition()).getLink();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(link));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
//onclick that opens new activity
myViewHolder.title.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Intent i = new Intent(context, SingleNews.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("title", newsList.get(myViewHolder.getAdapterPosition()).getTitle());
i.putExtra("urlToImage", newsList.get(myViewHolder.getAdapterPosition()).getImageUrl());
i.putExtra("publishedAt", newsList.get(myViewHolder.getAdapterPosition()).getDate());
i.putExtra("content", newsList.get(myViewHolder.getAdapterPosition()).getContent());
context.startActivity(i);
}
});
}
@Override
public int getItemCount() {
return newsList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView title, description, date;
ImageView photoUrl;
LinearLayout viewContainer;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(R.id.news_title);
date = itemView.findViewById(R.id.news_date);
//description = itemView.findViewById(R.id.news_description);
photoUrl = itemView.findViewById(R.id.news_photo);
viewContainer = itemView.findViewById(R.id.newsView_container);
}
}

}

您在 MyViewHolder 构造函数上注释了说明 textView 初始化,因此您必须取消注释它以避免在调用 setText (( 时出现 nullPointerExeption

相关内容

最新更新