2010-12-28 5 views
0

Android SDK가 내 안드로이드 앱을 올바르게 컴파일하지 못하는 것으로 보입니다. 앱을 만든 후에 때로는 무작위로 예외가 발생하는 경우가 있습니다. 문제가되는 코드를 주석으로 처리하고, 다시 작성하고, 코드의 주석 처리를 제거한 다음 다시 작성하면 오류가 사라집니다. 예를 들어 Android SDK가 앱을 올바르게 컴파일하지 못했습니다.

는,이 코드는 나에게 NullPointerException이 준 :

playButton.setOnClickListener를 (새 OnClickListener를() { 공공 무효 온 클릭 (보기 V) { 에 startActivityForResult (설정, PLAY_GAME) } });

아무 것도 없음이 코드가 잘못되었습니다! 그러나 adb logcat은 그것이 예외의 원인이라고 말해줍니다. 이 코드를 주석 처리하여 다시 작성, 주석 처리 및 재구성을하면 오류가 사라집니다.

무슨 일입니까?

이것은 안드로이드 개발이 특히 실망스럽게 만들고 있습니다.

업데이트 : 이전에 지적했듯이, 이러한 것들은 주석 처리/재 컴파일/주석/재 컴파일 후에 사라지는 임의 오류입니다. 그래서 stacktrace를 재현 할 수 없습니다. 올바르게 기억하면 NullPointerException이 발생했습니다.

그러나 실제로 버그가있는 프로그래밍 인 경우 응용 프로그램이 이제는 전혀 오류없이 실행됩니다.

앱을 크게 변경 (새 리소스, 새 클래스, 함수 추가 등) 할 때마다 정상적으로 작동하는 이전 코드가 손상됩니다. 왜?

업데이트 : 진심 어린 애들은 증오심을 털어 놓습니다. 나는 무신론자 대 기독교 토론에 비틀 거리는 것처럼 느껴진다. 안드로이드가 잘못한 것을 유감스럽게 생각해서 죄송합니다. 최신 오류가있는 새로운 질문 시작일 :

App Ran Fine, Now Breaking for Seemingly Unknown Reasons

+0

예외가 발생하면 어떻게됩니까? (예외가 실제로 Activity 내에서 던져 질 수도 있지만, 자세히 보지 않으면 그 행에서 예외가 발생하는 것처럼 보일 수 있습니다. –

+0

playButton 및 설정이 올바르게 지정 되었습니까? 이런 기본적인 경우를 위해 널리 사용되는 안드로이드 툴킷보다 코드에 버그가있을 확률이 높습니다. 변수가 선언되고 할당되는 곳은 어디입니까? –

+1

여기에 예외를 보여주는 스택 추적을 게시하고 전체 코드 스 니펫을 게시하십시오. 100K 이상의 응용 프로그램을 빌드하는 데 도움이 잘 구축 및 테스트 도구입니다. 그래서 문제는 SDK에, 그 코드에서 문제가 가능성이 있습니다. 내가 지금 볼 수있는 어떤 때로는 playButton null로 결론 지을 수 있습니다. –

답변

0

아니요, 다른 여러 곳에서 언급했듯이 소스와 휴지통이 동기화되지 않는 경우가 있습니다. 나는 특히 XML을 변경할 때 여러 번 주목했다. 명령 행 사용자를위한 해결책은 bin 디렉토리를 제거하고 다시 컴파일하는 것입니다. 문제가 사라집니다.

1

,이 코드를 언급 재건의 주석과 재건을, 오류가 멀리 갈 수 있습니다. 당신이 안드로이드의 버그를 좋아하는

보일 수도 있지만, 나는 진짜 문제는 스레딩/동기화와 관련된 버그가 당신의 코드에 있다고 생각한다. 예를 들어, playButton은 초기화되기 전에 사용 중일 수 있습니다.

그러나 스택 추적을 표시하고 예외가 발생한 행의 코드를 식별하지 않는 한 실제로 도움을 줄 수는 없습니다. 그것이 정말로 버그 프로그램의 경우 승/


그러나, 왜 응용 프로그램은 전혀 오류 O를 지금 잘 실행?

위 참조 : 스레딩/동기화 문제가있을 가능성이 큽니다. GUI가있는 응용 프로그램의 다른 부분은 명시 적으로 해당 스레드를 작성하지 않았더라도 다른 스레드에서 실행된다는 점을 알아야합니다. 따라야하는 규칙이 있습니다. 그 규칙을 따르지 않으면 나쁜 일이 일어납니다 ...바람이 불고있는 어떤 방법에 따라 때로는 일어나는 일도 일어나지 않을 때도 있습니다.

+0

setOnClickListener를 설정하는 데 사용되는 코드 onCreate를 제외하고는 playButton이 전혀 사용되지 않습니다. 그것이 "표준"의 안드로이드 행동이고 버그가 아니라면 그것은 진정으로 반 직관적 인 행동입니다. 하지만 전에 말했듯이 그 무작위 오류의 예제 일뿐입니다. –

+1

@U Avalos : 스택 추적으로 또 다른 예외가 발생할 때까지 질문을 철회해야합니다. 당신이 암시하는 것만 큼 흔한 일이라면 오래 걸리지 않을 것입니다. –

+0

@Dan 사실, 코드의 다른 부분에서 널 포인터 예외가 발생했습니다. –

0

PLAY_GAME 활동이 결과없이 돌아 오는 것일 수 있습니다. 예를 들어 뒤로 버튼 &을 누르면 setResult()를 호출하지 않고 중지됩니다.

관련 문제