在我的应用程序中,我必须使用Web服务响应来填充视图。
我正在获得正确的Web服务响应,但在使用响应填充视图时,我在设备上运行时会获得NPE。但是,当在模拟器中运行时,它正常工作。
我找不到NPE的原因,下面是我的代码,有人可以帮忙吗?
在getview()
的{{1}}方法中引发了异常。
堆栈跟踪:
r2(holder.r2.setRating(ksrating_value_w_onedecimal);)
和java文件:
07-20 17:21:21.357: ERROR/AndroidRuntime(4144): java.lang.NullPointerException
07-20 17:21:21.357: ERROR/AndroidRuntime(4144): at com.ibkr.roadbrake.RB_StaticSearchResults$StaticSearchResultsListViewAdapter.getView(RB_StaticSearchResults.java:810)
07-20 17:21:21.357: ERROR/AndroidRuntime(4144): at android.widget.AbsListView.obtainView(AbsListView.java:1385)
07-20 17:21:21.357: ERROR/AndroidRuntime(4144): at android.widget.ListView.measureHeightOfChildren(ListView.java:1213)
07-20 17:21:21.357: ERROR/AndroidRuntime(4144): at android.widget.ListView.onMeasure(ListView.java:1126)
07-20 17:21:21.357: ERROR/AndroidRuntime(4144): at android.view.View.measure(View.java:8020)
07-20 17:21:21.357: ERROR/AndroidRuntime(4144): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
答案 0 :(得分:0)
<强>更新强>
我现在明白出了什么问题。此方法出错:
holder.r2.setRating(ksrating_value_w_onedecimal);
表示持有者或r2为空。因为holder是通过调用new ViewHolder()
来初始化的,所以只有在抛出异常时才能为null,所以这不是问题。接下来你打电话
holder.r2 = (RatingBar)convertView.findViewById(R.id.kssmall_ratingbar);
这似乎是你的问题。如果findViewById()方法找不到被引用的id,则返回null。
因此,请查看stsearchresults_eachitem.xml
并确认您的身份kssmall_ratingbar
- 我怀疑您的问题出在哪里。
原始回复:
如果只看一下导致异常的行,NullPointerExceptions通常很容易。在这种情况下,请看一下:
com.ibkr.roadbrake.RB_StaticSearchResults $ StaticSearchResultsListViewAdapter.getView(RB_StaticSearchResults.java:810)
检查每个变量并确定它是否为null;其中一个绝对是。然后弄清楚为什么它是null。继续这样做,直到找到问题为止。希望能提供足够的信息。
顺便说一句,我没有看到任何调用r2()方法的代码,所以当你说:时我不明白在r2的getview()方法中引发异常(holder.r2.setRating(ksrating_value_w_onedecimal);)。