2014-05-16 3 views
0

내 응용 프로그램에 오류가 발생했습니다. 내 일반적인 디버깅 방법은 문제를 일으키는 줄을 추적하고 로그에서 마무리하고 내가 잘못했는지 파악하는 것입니다. 이 경우, 나는 을 믿는다. 어떤 줄이 문제의 원인인지는 알지만, 그게 저를 곤란하게합니다.Android : 내가 잡을 수없는 IllegalStateException 받기

더 나쁘고, 나는 그것을 try/catch로 감쌌지만 아무 것도 잡히지 않았습니다. 그래서 나는 두 가지 중 하나 일이 벌어지고 결론 :

  • 내가 어느 대해 라인
  • 내가 멍청한 짓했던 오류를 발생하고

그래서 말해 내 얼굴을 쳐다보고 틀렸다 나, 오류가 setText 줄로 인해 발생하지 않은 경우가 있습니까? 그리고 그렇지 않다면, 왜 잡을 수 없습니까? (BTW, 라인 207 링크를 클릭하면 "try"라인으로 이동합니다.이 메소드는 onClick 메소드에서 호출됩니다 .Rididupdater_title은 인플레이터 내부의 TextView를 참조합니다. 코드 줄을 기반으로

)

:

LayoutInflater layoutInflater = (LayoutInflater) mThis.getSystemService(LAYOUT_INFLATER_SERVICE); 
    View view=layoutInflater.from(mThis).inflate(R.layout.connection_update,null); 
    if (v.getId() == R.id.AddFriendButton) { //Change dialog to Add 
     Log.d("editUserDialog","updater_title: " + R.id.updater_title + "; AddTitle: " + R.string.Friends_AddTitle); 
     Log.d("editUserDialog","AddTitle: " + getString(R.string.Friends_AddTitle)); 
     try {((TextView)findViewById(R.id.updater_title)).setText(R.string.Friends_AddTitle);} 
     catch(Exception e) {Log.e("editUserDialog","Err: " + e.getMessage());} 
     Log.d("editUserDialog - Add", "updater_title changed"); 
     Log.d("editUserDialog - Add","StateList1 = " + StateList.get(1)); 
     friendState.set(0,StateList.get(1),"your friend"); //"your friend" should ideally be replaces with friend's name 
    } 

그리고이 로그는 스택 : 그것은 문제처럼 보인다

05-16 00:34:26.295 17798-17798/com.farmsoft.lunchguru.app D/editUserDialog﹕ updater_title: 2131165293; AddTitle: 2131361798 
     05-16 00:34:26.445 17798-17798/com.farmsoft.lunchguru.app D/editUserDialog﹕ AddTitle: Add New Friend 
     05-16 00:34:26.455 17798-17798/com.farmsoft.lunchguru.app D/AndroidRuntime﹕ Shutting down VM 
     05-16 00:34:26.455 17798-17798/com.farmsoft.lunchguru.app W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x417be898) 
     05-16 00:34:26.485 17798-17798/com.farmsoft.lunchguru.app E/AndroidRuntime﹕ FATAL EXCEPTION: main 
     java.lang.IllegalStateException: Could not execute method of the activity 
     at android.view.View$1.onClick(View.java:3852) 
     at android.view.View.performClick(View.java:4489) 
     at android.view.View$PerformClick.run(View.java:18803) 
     at android.os.Handler.handleCallback(Handler.java:730) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5455) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at android.view.View$1.onClick(View.java:3847) 
     at android.view.View.performClick(View.java:4489) 
     at android.view.View$PerformClick.run(View.java:18803) 
     at android.os.Handler.handleCallback(Handler.java:730) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5455) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.NullPointerException 
     at com.farmsoft.lunchguru.app.ManageFriends.editUserDialog(ManageFriends.java:207) 
     at com.farmsoft.lunchguru.app.ManageFriends.onClick_AddFriend(ManageFriends.java:187) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at android.view.View$1.onClick(View.java:3847) 
     at android.view.View.performClick(View.java:4489) 
     at android.view.View$PerformClick.run(View.java:18803) 
     at android.os.Handler.handleCallback(Handler.java:730) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5455) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
     at dalvik.system.NativeStart.main(Native Method) 
+3

"이 경우, 어떤 줄이 문제를 일으키는 지 알 것입니다."- ManageFriends.java, 207 행처럼 보입니다. 예외를 잡으려고 시도해서는 안됩니다. 버그입니다. 대신 코드. –

답변

1

(TextView)findViewById(R.id.updater_title)) 

당신은 당신이 TextVeiw 당신이 찾고있는 보유하고 팽창 ViewfindVeiwById() 방법을 사용할 필요가

(TextView)view.findViewById(R.id.updater_title)) 

해야한다.

Jon Skeet이 언급 한대로 문제를 발견 한 경우 일지라도 try/catch에 버그를 감싸고 싶지는 않습니다. 당신은 logcat에서 그것이 NPE이라는 것을 알기 때문에 무엇이 보일지 알 수 있습니다. 이되고 null입니다. 왜인지는 null입니다.

+0

감사합니다. Android Studio가 문자열 리소스 ID를 채우는 데 도움을 주었기 때문에 null이 될 수도 있습니다. 나는 단지 문제를 찾기위한 최후의 수단으로 디버깅을 위해서 try/catch를 사용했다. 그런데 왜 오류를 잡아 내지 못했을까요? – Scott

+0

코드를 실행하지 않고 무엇이 일어나고 있는지를 알지 못하기 때문에 그것이 발생했기 때문에 일어나지 않습니다. – codeMagic

관련 문제