我对此问题感到非常沮丧。首先,这确实没有问题,我不知道为什么现在会出现此错误。

该应用程序可以在我的手机(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


OK,所以我查找了引起问题的原因(08-24 21:10:11.726:ERROR / AndroidRuntime(423):在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)上的“规则”活动出现相同的错误。这没有意义,因为设置活动还具有“ setOnClickListener”。到底是怎么回事?!

最佳答案

听起来像是腐败的工厂。 Eclipse中的Android有时会使用实际布局从sysnc中获取自动生成的资源文件。正如Xion所提到的,清理并重建将通过Project-> Clean ...-> Clean all projects修复此问题。在执行此操作之前,请确保已选中项目->自动生成。

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

10-11 22:31