android - 由 setOnClickListener 引起的 NullPointerException?

标签 android onclick nullpointerexception

我对这个问题感到非常沮丧。首先,这确实工作正常,没有任何问题,我不知道为什么我现在会收到此错误。

该应用程序在我的手机 (v2.3.4) 上运行良好,但在一个模拟器 (1.6 > 2.3) 上运行不佳

我在加载应用程序后立即收到的错误是“NullPointerException”。这是 DDMS

08-24 21:10:11.706: WARN/dalvikvm(423): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-24 21:10:11.726: ERROR/AndroidRuntime(423): FATAL EXCEPTION: main
08-24 21:10:11.726: ERROR/AndroidRuntime(423): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.app/com.myapp.app.SplashActivity}: java.lang.NullPointerException
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.os.Looper.loop(Looper.java:123)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.app.ActivityThread.main(ActivityThread.java:3647)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at java.lang.reflect.Method.invokeNative(Native Method)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at java.lang.reflect.Method.invoke(Method.java:507)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at dalvik.system.NativeStart.main(Native Method)
08-24 21:10:11.726: ERROR/AndroidRuntime(423): Caused by: java.lang.NullPointerException
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at com.myapp.app.SplashActivity.onCreate(SplashActivity.java:43)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
08-24 21:10:11.726: ERROR/AndroidRuntime(423):     ... 11 more

好的,所以我查找导致问题的原因 (08-24 21:10:11.726: ERROR/AndroidRuntime(423): at com.myapp.app.SplashActivity.onCreate(SplashActivity.java:43))

这是我的onCreate:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.welcome);


    Button playBtn = (Button) findViewById(R.id.playBtn);
    playBtn.setOnClickListener(this);
    Button settingsBtn = (Button) findViewById(R.id.settingsBtn);
    settingsBtn.setOnClickListener(this);
    Button rulesBtn = (Button) findViewById(R.id.rulesBtn);
    rulesBtn.setOnClickListener(this);
    Button exitBtn = (Button) findViewById(R.id.exitBtn);
    exitBtn.setOnClickListener(this);
}

第43行是最后一个:exitBtn.setOnClickListener(this);

这稍后会在应用程序中使用每个按钮的 switch 语句进行处理,退出按钮的唯一代码是“finish();”但它会崩溃 'onCreate' 而不是 onClick。

这对我来说毫无意义,它曾经工作得很好而且我没有更改与此相关的代码,因为它以前工作过。此外,退出按钮的设置与所有其他按钮(在 src 和布局文件中)完全相同,那么为什么当它到达退出按钮时会崩溃?正如我所说,这在我的 cyn7 设备上工作正常,但在任何模拟器上都没有(它确实如此)

这个应用程序已经花费了大量的工作才能达到这一点,当它开始时我只是在做最后的测试..太令人生气了!

任何人都可以提供任何建议来修复甚至为什么会发生这种情况吗?

编辑:好的,这真的很奇怪。我注释掉了退出按钮。现在我的“播放”按钮什么都不做(即使在 DDMS 中它什么也没显示)设置正常并且规则崩溃,setOnClickListener(this) 上的规则 Activity 出现相同的错误。这没有意义,因为设置 Activity 也有一个“setOnClickListener”。这是怎么回事?!

最佳答案

听起来像是一个损坏的工作区。 Eclipse 中的 Android 有时会使用实际布局从 sysnc 中获取自动生成的资源文件。正如 Xion 提到的,清理和重建将通过 Project -> Clean... -> Clean all projects 解决这个问题。在执行此操作之前,确保勾选了项目 -> 自动构建。

关于android - 由 setOnClickListener 引起的 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182503/

相关文章:

java - 尝试在空对象引用上调用虚拟方法“boolean java.util.ArrayList.add”

java - 是否可以在 android studio 中使用仅 java 的模块?

GCM 的 Android 客户端未收到回显推送通知

javascript - 如何使用 Javascript 在 onmouseover 时注册 onclick 事件

javascript - 我无法使用 onclick 来工作

java - Hive NVL 不适用于列的日期类型 - NullpointerException

c# - 使用 Xamarin 显示 Android ProgressBar

android - TimerTask、Geolocation 和 Looper

JavaScript "this"引用了错误的对象

java - 使用 wsdl4j 解析 wsdl 以列出操作、输入/输出参数时出现空指针异常