由setOnClickListener引起的NullPointerException?

时间:2011-08-24 21:27:47

标签: 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);

稍后在app中使用每个按钮的switch语句处理,退出按钮的唯一代码是'finish();'但它崩溃'onCreate'而不是onClick。

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

这个应用已经花费了大量的工作来达到这一点,我刚刚开始进行最终测试..真是太激怒了!

任何人都可以提供任何修复建议,甚至可能会发生这种情况的原因吗?

编辑:好的,这真的很奇怪。我注释掉了“退出”按钮。现在,我的“播放”按钮不执行任何操作(即使在DDMS中也没有显示任何内容)设置正常并且规则崩溃,并且setOnClickListener(this)上的规则活动出现相同的错误。这没有任何意义,因为设置活动也有'setOnClickListener'。发生了什么事?!

1 个答案:

答案 0 :(得分:2)

听起来像腐败的作品。 Eclipse中的Android有时会使用实际布局从sysnc中获取自动生成的资源文件。正如Xion所说,干净和重建将通过Project - >解决这个问题。干净...... - >清理所有项目。在此之前,请确保Project - >勾选自动构建。