我有一个非常简单的应用程序。它由一个有2个页面的viewpager组成,在两个页面中它们都有自定义列表视图的片段,这些片段预先填充在应用程序加载上并保持" alive"使用:
_viewPager.OffscreenPageLimit = 2;
listviews有一个继承自BaseAdapter的适配器,我收到崩溃报告。在调试时,甚至在我自己使用应用程序时,我无法在本地复制此内容。
堆栈跟踪是:
java.lang.RuntimeException:java.lang.reflect.InvocationTargetException 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 引起:java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728) ......还有1个 引起:md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable:System.NullReferenceException:对象引用未设置为对象的实例 at foo.bar.UserListViewAdaptor.get_Count()< 0x9be17c00 + 0x00018> in:0 在Android.Widget.BaseAdapter.n_GetCount(IntPtr jnienv,IntPtr native__this)< 0x9be17b98 + 0x00037> in:0 at(wrapper dynamic-method)System.Object:aaa28d5c-cd54-4afd-9f37-9496877357de(intptr,intptr) ---从抛出异常的先前位置开始的堆栈跟踪结束---
我从来没有遇到任何崩溃/错误,只是在我重新设计应用程序以使用我遇到过的视图寻呼机时,它才是一个单独的活动中的片段而且它有效精细。也许它与浏览器处理片段的方式有关,我只是不知道。
Xamarin本身已经从一对一的支持转移到了社区支持驱动的环境,因此建议在SO上发布,但我并没有屏住呼吸获得支持。如果有人能说清楚,我会很感激。
编辑:
这是UserListViewAdapter的要点:
https://gist.github.com/jaymarvels/4160cebcfcea8639927edfd9d2649d7f
答案 0 :(得分:0)
通过堆栈跟踪,Count
中的UserListViewAdapter
方法抛出空引用异常。由于您只访问用户列表,我想这可能是列表为空。我可能会将该财产改为......
public override int Count
{
get
{
return (_items != null) ? _items.Count : 0;
}
}
此外,至少应该实现视图持有者模式,或切换到使用RecyclerView
。呼叫FindViewById
是一项昂贵的性能调用。当用户滚动时,每行调用3次可能会导致性能下降。