NullPointerException, вызванный setOnClickListener? - PullRequest
1 голос
/ 25 августа 2011

Я слишком разочарован этой проблемой.Прежде всего, это работало нормально, без проблем, я понятия не имею, почему я сейчас получаю эту ошибку.

Приложение отлично работает на моем телефоне (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: ОШИБКА / 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 и layout), так почему же она зависала, когда доходила до кнопки выхода?Как я уже сказал, это работает нормально на моем устройстве cyn7, но не на любом из эмуляторов (это было сделано)

Это приложение заняло огромное количество работы, чтобы добраться до этого момента, я просто делал финальные тестыкогда это началось .. так бесит!

Может ли кто-нибудь предложить какие-либо предложения по исправлению или даже относительно того, почему это может произойти?

РЕДАКТИРОВАТЬ: ОК, это действительно странно.Я закомментировал кнопку «Выход».Теперь моя кнопка «Воспроизвести» ничего не делает (даже в DDMS ничего не показывает) настройки в порядке, и правила вылетают, с той же ошибкой для действия правил в setOnClickListener (this).Что не имеет смысла, так как в настройках также есть setOnClickListener.Что происходит?!

1 Ответ

2 голосов
/ 25 августа 2011

Звучит как испорченная рабочая среда. Android в Eclipse иногда получает автоматически сгенерированные файлы ресурсов из sysnc с фактической компоновкой. Как упоминал Xion, очистка и перестройка исправят это через Project -> Clean ... -> Очистить все проекты. Прежде чем сделать это, убедитесь, что в Project -> Build Auto галочки установлено.

...