2013-08-07 5 views
0

나는이 예외를 잡을 수 없을 것 같아 앱이 충돌한다. 난 그냥 앱 충돌 및 널 포인터 예외 여기내 예외를 잡을 수 없다

가 계속

public void GoToStation(View v) 
{ 
try 
{ 
Intent myIntent = new Intent(MainActivity.this, CustomizedListViewStudentZone.class); 
startActivityForResult(myIntent, 0); 
} 

} 
catch (Exception e) 
{ 
Toast.makeText(this, "You need a data connection to view Safety Zones", Toast.LENGTH_LONG).show(); 

} 

은 오류가 CustomizedListViewStationonCreate에, 가브리엘 네토에 의해 언급 한 바와 같이 내 로그인 고양이

01-06 04:55:28.667: E/AndroidRuntime(2983): FATAL EXCEPTION: main 
01-06 04:55:28.667: E/AndroidRuntime(2983): java.lang.RuntimeException: Unable to start activity ComponentInfo{police.uk.greatermanchesterpoliceandroid/police.uk.greatermanchesterpoliceandroid.CustomizedListViewStation}: java.lang.NullPointerException 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1830) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.os.Looper.loop(Looper.java:150) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.app.ActivityThread.main(ActivityThread.java:4277) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at java.lang.reflect.Method.invoke(Method.java:507) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at dalvik.system.NativeStart.main(Native Method) 
01-06 04:55:28.667: E/AndroidRuntime(2983): Caused by: java.lang.NullPointerException 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at police.uk.greatermanchesterpoliceandroid.CustomizedListViewStation.onCreate(CustomizedListViewStation.java:100) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794) 
01-06 04:55:28.667: E/AndroidRuntime(2983):  ... 11 more 
+0

예외 로그캣을 게시하십시오 –

+0

NPE를 잡으실 필요가 있습니다 CustomizedListViewStudentZone.onCreate – roostertech

+1

오류가 주어진 코드에 없습니다. 당신이 시작하는 활동에 있습니다. '01-06 04 : 55 : 28.667 : E/AndroidRuntime (2983) : police.uk.greatermanchesterpoliceandroid.CustomizedListViewStation.onCreate (CustomizedListViewStation.java:100)' –

답변

1

입니다. startActivityForResult에 대한 호출은 Android OS에 대한 의도를 시작하고 즉시 반환하므로 새로운 활동으로 인해 예외가 발생하지 않습니다. 사실, startActivityForResult 뒤에 올린 코드는 심지어 onCreate 전에 실행될 수도 있습니다. onCreate의 오류가 CustomizedListViewStation인지 확인해야합니다.

0

Android OS의 아키텍처로 인해 이러한 예외를 catch 할 수 없습니다. startActivity (또는 이와 유사한 메소드)를 호출하면 실제로 새로운 Activity이 생성되지 않습니다. 대신, Activity을 표시하고 OS는 Intent (문자 : 의도 :)을 등록한다고 말합니다. 그런 다음 운영 체제가 귀하의 Intent을 처리 할 좋은 시간이라고 결정하면 Activity이 생성됩니다.

다른 말로 - ActivitystartActivity으로 전화를 걸지 않고 나중에 생성됩니다. OS의 내부 논리. 그래서 예외가 던져지면 더 이상 당신의 방법에 있지 않기 때문에 그것을 잡을 수 없습니다.

0

Dmitry Zaitsev가 말했듯이 startActivity에서 Activity 라이프 사이클의 예외는 처리하지 않습니다.

대신 예외를 throw 할 수있는 두 번째 활동의 onCreate에서 예외를 캡처해야합니다.

0

답변 해 주신 모든 분들께 감사드립니다. 참으로 훌륭한 코드였습니다. 대상 활동에서 오류가 발생했습니다.

수정 사항은 CustomizedListViewStudentZone을 만들 때 오류를 처리하는 것이 었습니다.

이 메서드에 try catch를 적용했는데 문제가 해결되었습니다.

+0

해당 답변 옆에있는 체크 표시를 클릭하여 향후 독자에게 정확한 답이 표시 될 수 있습니까? 감사. – user1132959

관련 문제