NullPointerException 错误尝试在空对象引用上调用虚拟方法错误
Posted
技术标签:
【中文标题】NullPointerException 错误尝试在空对象引用上调用虚拟方法错误【英文标题】:NullPointerException Error Attempt to invoke virtual method error on a null object reference 【发布时间】:2018-11-20 01:30:28 【问题描述】:我正在制作一个语言学习程序。我正在做的是对每组单词进行测试。 没有编译错误;但是,根据我的 logcat,我的适配器上有一个 nullpointerexception。我不确定为什么会这样。
我的适配器
if (convertView == null)
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(this.layout, parent, false);
holder.answer = (EditText)convertView.findViewById(R.id.answer);
convertView.setTag(holder);
else
holder = (ViewHolder)convertView.getTag();
holder.ref = position;
final EditText answer = (EditText)convertView.findViewById(R.id.answer);
final Test listViewItem = TestList.get(position);
holder.answer.setText(listViewItem.getAns());
if(listItem == null)
listItem = LayoutInflater.from(mContext).inflate(R.layout.row, parent, false);
Test currenttest = TestList.get(position);
TextView Qunum = (TextView) listItem.findViewById(R.id.Qnum);
Qunum.setText(currenttest.getQnum());
TextView Kore = (TextView) listItem.findViewById(R.id.Korean1);
Kore.setText(currenttest.getK());
TextView Prono = (TextView) listItem.findViewById(R.id.Pronounciation);
Prono.setText(currenttest.getPron());
return listItem;
需要意图的活动
getScore.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
for(int i=0;i<20;i++)
View view=listview.getChildAt(i);
EditText editText=view.findViewById(R.id.answer);
String string = editText.getText().toString();
inputans.add(string);
count = 0;
for(int x = 0; x < 20; x++)
if(answers.get(x) == inputans.get(x))
count++;
Intent intent = new Intent(numbertest.this, dicselect.class);
intent.putExtra("score", count);
if(count<10)
intent.putExtra("message", "Work Harder !!");
startActivityForResult(intent, 1);
else if(count<=15)
intent.putExtra("message", "Great !!");
startActivityForResult(intent, 1);
else
intent.putExtra("message", "Well Done !!");
startActivityForResult(intent, 1);
startActivity(intent);
);
我的自定义列表视图项的 xml 代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical">
<LinearLayout
android:layout_
android:layout_
android:orientation = "horizontal">
<TextView
android:id="@+id/Qnum"
android:text=""
android:layout_
android:layout_
android:textColor="#000000"
android:textSize="20dp"
android:layout_marginLeft="4dp"
android:layout_marginTop = "4dp"
android:layout_gravity="center"/>
<TextView
android:id="@+id/Korean1"
android:text=""
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_marginLeft="5dp"
android:textSize = "20dp"/>
<TextView
android:text=""
android:id="@+id/Pronounciation"
android:layout_
android:layout_
android:layout_gravity = "center"
android:layout_marginLeft = "4dp"
android:textSize = "20dp"/>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="horizontal">
<TextView
android:layout_
android:layout_
android:layout_marginLeft="2dp"
android:text = "Answer: "
android:layout_gravity="center"
android:textSize = "25dp"
android:textColor = "#000000"
/>
<EditText
android:id="@+id/answer"
android:layout_
android:layout_
android:textSize="20dp"
android:layout_marginLeft="5dp"
android:layout_gravity="center"
/>
</LinearLayout>
LogCat java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)” 在 com.example.rkdtm.koreanlearner.TestAdapter.getView(TestAdapter.java:73) 在 android.widget.AbsListView.obtainView(AbsListView.java:2366) 在 android.widget.ListView.makeAndAddView(ListView.java:2052)
【问题讨论】:
【参考方案1】:我不确定this.layout
是什么,但不管它是什么,它应该是您的项目布局 XML 资源:
convertView = LayoutInflater.from(parent.getCo).inflate(R.layout.row, parent, false);
你不需要膨胀listItem
,因为我认为它和convertView
是一样的:
TextView Qunum = (TextView) convertView.findViewById(R.id.Qnum);
Qunum.setText(currenttest.getQnum());
TextView Kore = (TextView) convertView.findViewById(R.id.Korean1);
Kore.setText(currenttest.getK());
TextView Prono = (TextView) convertView.findViewById(R.id.Pronounciation);
Prono.setText(currenttest.getPron());
为了以防万一,当您在TextView 上设置文本时,请确保不要使用Integer
。
【讨论】:
以上是关于NullPointerException 错误尝试在空对象引用上调用虚拟方法错误的主要内容,如果未能解决你的问题,请参考以下文章
数据库错误:“NullPointerException:尝试在空对象引用上调用虚拟方法 getApplicationInfo()...”[重复]
java.lang.NullPointerException:尝试在 OnPostExecute() 上的空对象引用错误上调用接口方法 - AsyncTask
奇怪的 nullPointerException 错误 - 数据库相关
错误:java.lang.NullPointerException:尝试在空对象引用上调用接口方法“int java.util.List.size()”