gpt4 book ai didi

Android:实现了onClickListener,NullPointerException

转载 作者:行者123 更新时间:2023-11-29 18:08:36 25 4
gpt4 key购买 nike

这可能是我的经验有限,但我遇到了一个奇怪的错误,这让我很困惑。我有一个带有一堆按钮的 Activity ,然后将这些按钮分配到一个二维数组 (btns[][]) 中。最初,我曾经通过使用匿名类来设置 OnClick 监听器,对于每个按钮,它基本上如下所示:

btns[x][y].setOnClickListener(new OnClickListener(() {
onClick(View v) {
btns_OnClick(x, y, btns[x][y]);
}

并不是说 x 和 y 在这种情况下是硬编码常量。

因为这真的很烦我,所以我实现了:

private class TimerButtonOnClickListener implements OnClickListener {
int[] crds;

public TimerButtonOnClickListener(int row, int col) {
crds = new int[] { row, col };
}

public void onClick(View v) {
btns_OnClick(crds[0], crds[1],
btns[crds[0]][crds[1]]);
}
}

然后按如下方式将监听器分配给按钮:

    for (int i = 0; i < 6; i++)
for (int j = 0; j < 2; j++)
btns[i][j].setOnClickListener(new TimerButtonOnClickListener(i, j));

以上发生在 onCreate 中,但不会立即发生崩溃。实际上,我不知道它崩溃的地方。 LogCat 给出

FATAL EXCEPTION: main
java.lang.NullPointerException
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1061)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1078)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

我使用处理程序从计时器任务调用 ui 更新,但即使我删除了计时器,我仍然会收到此错误,所以它可能不是我自己的处理程序在那里中断。

除此之外,我没有对源代码进行任何更改。 (我什至 diff'd,我也没有碰任何其他文件。)

我做错了什么?

最佳答案

错误与按钮无关。如果是这种情况,堆栈跟踪会提到“按钮”、“onClick”或与按钮相关的内容。

相反,NullPointerException 在系统连接到 Service 时发生。看着 source对于异常发生的地方

at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1061)

if (service != null) {
// mConnection is a ServiceConnection
mConnection.onServiceConnected(name, service); // 1061
}

可以看出它很可能与 Context#bindService() 有关使用 null ServiceConnection

关于Android:实现了onClickListener,NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12045969/

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