gpt4 book ai didi

android - dispatchTouchEvent 中看似不可能的 NullPointerException

转载 作者:行者123 更新时间:2023-12-05 00:07:37 24 4
gpt4 key购买 nike

我有一个 Android 应用程序在某些设备上崩溃,在我的 dispatchTouchEvent 实现中出现 NullPointerException。我从来没有真正看到崩溃发生在我的任何设备上,但它每天在现场发生很多次,因为我在我自己的分析和 Android 开发者控制台中都看到了崩溃。问题是我很难弄清楚这次崩溃是如何发生的。这是相关代码(我在代码中标记了“CRASH HERE ->”抛出 NullPointerException 的地方):

if (…)
{
...
}
else if (event != null)
{
if (event.getAction() == MotionEvent.ACTION_DOWN) {
motionStartX = event.getX();
motionStartY = event.getY();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
...
if (...)
{
...
}
else if (event != null && event.getPointerCount() > 0 &&
/*** CRASH HERE -> ***/(Math.abs(motionStartX - event.getX()) > 5 ||
Math.abs(motionStartY - event.getY()) > 5))
{
...
}
}
}

根据我的理解,如果 eventnull,则可以抛出 NullPointerException 的唯一方法,但是,在它上面的行中,我添加了一些偏执检查eventnull,甚至事件有指针。尽管如此,我还是遇到了崩溃。我觉得我错过了什么。有没有人对此有任何见解?

最佳答案

0) 我认为问题是你没有处理异常。

1) 这两个(motionStartX , motionStartY) 应该在crash代码上面声明并且必须初始化(set),

2) 检查您没有处理错误的数据类型,例如您没有使用字符串作为整数。

3) 使用try Catch 语句来处理异常,如果这是异常而不是bug

4) 使用 Log.d("values on fun", "motionStartX = "+ motionStartX ", motionStartY= "+ motionStartY + ", event.getX() = "+ event.getX() ", event.getY () = "+ event.getY());Tp pring values,If values there then no null points,

else if (event.getAction() == MotionEvent.ACTION_UP)
{
try{
Log.d("values on function", "motionStartX = " + motionStartX " , motionStartY= " + motionStartY + " , event.getX() = " + event.getX() " , event.getY() = " + event.getY());
...
if (...){
...
}
else if (event != null && event.getPointerCount() > 0 &&
/*** CRASH HERE -> ***/(Math.abs(motionStartX - event.getX()) > 5 ||
Math.abs(motionStartY - event.getY()) > 5)){
...
}catch(Exception e){
//Handle exceptions here, if they are exceptions not bugs in your code
}
}

关于android - dispatchTouchEvent 中看似不可能的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13774854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com