Android SDK неправильно компилирует приложения - PullRequest
0 голосов
/ 28 декабря 2010

Кажется, что Android SDK неправильно компилирует мое приложение для Android. После создания приложения я иногда получаю случайные исключения. Ошибка исчезнет, ​​если я закомментирую нарушающий код код, перекомпилирую, раскомментирую код, а затем снова перекомпилирую.

Например, этот код дал мне исключение NullPointerException:

playButton.setOnClickListener (new OnClickListener () { public void onClick (View v) { startActivityForResult (настройки, PLAY_GAME); } });

Нет ничего неправильно этот код! И все же adb logcat говорит мне, что это причина исключения. Закомментирование этого кода, перекомпиляция, раскомментирование и перекомпоновка устраняют ошибку.

Что происходит?

Это делает разработку для Android особенно расстраивающей.

Обновление : Как я уже говорил ранее, это, казалось бы, случайные ошибки, которые исчезают, когда я раскомментирую / перекомпилирую / оставлю комментарий / перекомпилирую. Поэтому я не могу воспроизвести трассировку стека. Это было NullPointerException, если я правильно помню.

Однако, если это действительно глючное программирование, почему приложение теперь работает нормально, без ЛЮБЫХ ошибок вообще?

Всякий раз, когда я вносил существенные изменения в приложение (добавлял новый ресурс, новый класс, функцию и т. Д.), Старый код, который работал нормально, ломался. Почему?

Обновление : Серьезно, ребята, откажитесь от ненависти. Я чувствую, что наткнулся на дебаты между атеистами и христианами. Извините, что объяснил, что андроид был виноват. Начался новый вопрос с последними ошибками:

Приложение прошло отлично, теперь ломается по неизвестным причинам

Ответы [ 3 ]

1 голос
/ 28 декабря 2010

Комментирование этого кода, перекомпиляция, раскомментирование и перекомпоновка устраняют ошибку.

Это может показаться вам ошибкой в ​​Android, но я подозреваю, что настоящая проблемаошибка в потоке / синхронизации в вашем кодеНапример, playButton может использоваться до его инициализации.

Но мы не сможем вам помочь, если вы не покажете нам трассировку стека и не определите строки кода, в которых было сгенерировано исключение.


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

См. выше: это, скорее всего, потому что у вас есть проблемы с потоками / синхронизацией.Вы должны знать, что разные части приложения с графическим интерфейсом будут работать в разных потоках ... даже если вы не создавали эти потоки явно.Есть правила, которым вы должны следовать.Если вы не следуете этим правилам, случаются плохие вещи ... например, исключения, которые иногда случаются, а иногда и не случаются, в зависимости от того, каким образом дует ветер.

0 голосов
/ 14 сентября 2011

Нет, как отмечалось в некоторых других местах, иногда источник и приемник не синхронизируются. Я заметил много раз, особенно при внесении изменений в XML. Решение для пользователей командной строки заключается в удалении каталога bin и повторной компиляции. Проблема уходит.

0 голосов
/ 28 декабря 2010

Возможно, что ваша активность PLAY_GAME возвращается без результата, например, если вы нажмете кнопку "Назад" и она просто остановится без вызова setResult ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...