位于android.widget.AbsListView.contentFits的NullPointerException(AbsListView.java:722)

位于android.widget.AbsListView.contentFits的NullPointerException(AbsListView.java:722),java,android,android-listview,nullpointerexception,android-ui,Java,Android,Android Listview,Nullpointerexception,Android Ui,我得到一个奇怪的NullPointerException。我的代码中没有指向。我还知道,我的应用程序仅在以下情况下提供此NullPointerException: 制造商:索尼爱立信 产品:MT11i_1256-3856 安卓版本:2.3.4 有什么想法吗 java.lang.NullPointerException at android.widget.AbsListView.contentFits(AbsListView.java:722) at android.widget.

我得到一个奇怪的
NullPointerException
。我的代码中没有指向。我还知道,我的应用程序仅在以下情况下提供此NullPointerException:

制造商:索尼爱立信
产品:MT11i_1256-3856
安卓版本:2.3.4

有什么想法吗

java.lang.NullPointerException
    at android.widget.AbsListView.contentFits(AbsListView.java:722)
    at android.widget.AbsListView.onTouchEvent(AbsListView.java:2430)
    at android.widget.ListView.onTouchEvent(ListView.java:3447)
    at android.view.View.dispatchTouchEvent(View.java:3952)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:995)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1034)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1711)
    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1145)
    at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1695)
    at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2217)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1901)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3701)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
    at dalvik.system.NativeStart.main(Native Method)

我在我们的应用程序中有很多类似的例外。我对安卓操作系统的源代码做了一些研究,得出了一个结论——这是安卓操作系统姜饼及以下版本的错误,它已经在冰淇淋三明治中修复

如果您想了解更多详细信息,请查看姜饼源代码树中方法的源代码:

private boolean contentFits() {
    final int childCount = getChildCount();
    if (childCount != mItemCount) {
        return false;
    }

    return getChildAt(0).getTop() >= 0 && getChildAt(childCount - 1).getBottom() <= mBottom;
}
如您所见,有一个检查
(childCount==0)

关于此问题的解决方法,您可以声明自己的类
MyListView扩展ListView
,重写方法
onTouchEvent
,并使用try-catch块环绕调用
super.onTouchEvent()
。当然,您需要在应用程序的所有位置使用自定义ListView类

private boolean contentFits() {
    final int childCount = getChildCount();
    if (childCount == 0) return true;
    if (childCount != mItemCount) return false;

    return getChildAt(0).getTop() >= mListPadding.top &&
            getChildAt(childCount - 1).getBottom() <= getHeight() - mListPadding.bottom;
}