提问人:edweird 提问时间:8/5/2022 最后编辑:edweird 更新时间:8/8/2022 访问量:40
在 Android Studio 的 Java 应用中收到 NullPointerException 错误,看不到 id 问题
Receiving a NullPointerException Error in a Java App in Android Studio, cannot see problem with id
问:
收到此错误:
2022-08-04 21:01:08.374
9858-9858/com.erample.myapplication E/AndroidRuntime: FATAL EXCEPTION:
main
Process: com.erample.myapplication, PID: 9858
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.erample.myapplication.ui.TermAdapter.onBindViewHolder(TermAdapter.java:61)
at com.erample.myapplication.ui.TermAdapter.onBindViewHolder(TermAdapter.java:18)
public class TermAdapter extends RecyclerView.Adapter<TermAdapter.TermViewHolder> {
class TermViewHolder extends RecyclerView.ViewHolder{
private final TextView termItemView;
private TermViewHolder(View itemView){
super(itemView);
termItemView=itemView.findViewById(R.id.term_detail_Term_Name);
itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
int position=getAdapterPosition();
final Terms current=mTerms.get(position);
Intent intent=new Intent(context, CourseList.class);
intent.putExtra("termID", current.getTermID());
intent.putExtra("termName", current.getTermName());
intent.putExtra("termYear", current.getTermYear());
intent.putExtra("termStartDate", current.getTermStartDate());
intent.putExtra("termEndDate", current.getTermEndDate());
context.startActivity(intent);
}
});
}
}
private List<Terms> mTerms;
private final Context context;
private final LayoutInflater mInflater;
public TermAdapter(Context context){
mInflater=LayoutInflater.from(context);
this.context=context;
}
@NonNull
@Override
public TermAdapter.TermViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView=mInflater.inflate(R.layout.term_list_item,parent, false);
return new TermViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull TermAdapter.TermViewHolder holder, int position) {
if(mTerms!=null){
Terms current=mTerms.get(position);
String name= current.getTermName();
holder.termItemView.setText(name);
}
else {
holder.termItemView.setText("No term name");
}
}
public void setTerms(List<Terms> terms){
mTerms=terms;
notifyDataSetChanged();
}
@Override
public int getItemCount() {
if(mTerms!=null){
return mTerms.size();
}
else return 0;
}
}
从这里拉出:findViewById(R.id.term_detail_Term_Name);
<LinearLayout
android:id="@+id/termLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/term_detail_Term_Name"
android:layout_width="225dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/term_name"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/term_detail_Term_Year"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/term_year"
android:textAlignment="textEnd"
app:layout_constraintRight_toRightOf="@+id/term_detail_Term_Name"
app:layout_constraintTop_toBottomOf="parent" />
</LinearLayout>
通常 - Java 和 XML 文件之间可能会断开连接 - 但这两个文件的名称相同。
我不确定我错过了什么——对我来说,这一切就像来自另一个星球的语言。任何帮助都是值得赞赏的。我浏览了一堆类似的票证 - 并检查了按 ID 查找和 XML ID 之间的联系。
其他上下文:
第 61 行是 holder.termItemView.setText(name);在此块中:@Override public void onBindViewHolder(@NonNull TermAdapter.TermViewHolder holder, int position) { if(mTerms!=null){ Terms current=mTerms.get(position); String name= current.getTermName(); holder.termItemView.setText(name);
答: 暂无答案
评论
TermAdapter.java
onBindViewHolder
NullPointerException
holder
holder.termItemView
setText
NullPointerException
setText
name