2012-02-29 3 views
-1

응용 프로그램에서 새 활동의 의도를 작성하려고하지만 활동이 작성 될 때 널 포인터 예외가 발생하여 에뮬레이터가 강제 종료됩니다. 어떤 아이디어?의도를 생성하는 널 포인터 예외

... 
    ... 
//connect objects with the xml view 
searchbar = (EditText) findViewById(R.id.searchtxt); 
btmsearch = (Button) findViewById(R.id.searchbtm); 
searchopt = (TextView) findViewById(R.id.advsearchtxt); 

searchopt.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent bi = new Intent(getApplicationContext(), adv_search.class); 
     startActivity(bi); 
    } 
}); 
//make the search when click on search buttom 
btmsearch.setOnClickListener(new View.OnClickListener() { 

    ... 
    ... 

응용 프로그램의 로그 캣은 follwing을 수 있습니다 :

02-29 19:54:42.313: D/AndroidRuntime(628): Shutting down VM 
02-29 19:54:42.313: W/dalvikvm(628): threadid=3: thread exiting with uncaught exception (group=0x4001aa28) 
02-29 19:54:42.313: E/AndroidRuntime(628): Uncaught handler: thread main exiting due to uncaught exception 
02-29 19:54:42.323: E/AndroidRuntime(628): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.remotedata.firstapp/com.remotedata.firstapp.DataconectActivity}: java.lang.NullPointerException 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.app.ActivityThread.access$2100(ActivityThread.java:116) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.os.Looper.loop(Looper.java:123) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.app.ActivityThread.main(ActivityThread.java:4203) 
02-29 19:54:42.323: E/AndroidRuntime(628): at java.lang.reflect.Method.invokeNative(Native Method) 
02-29 19:54:42.323: E/AndroidRuntime(628): at java.lang.reflect.Method.invoke(Method.java:521) 
02-29 19:54:42.323: E/AndroidRuntime(628): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
02-29 19:54:42.323: E/AndroidRuntime(628): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
02-29 19:54:42.323: E/AndroidRuntime(628): at dalvik.system.NativeStart.main(Native Method) 
02-29 19:54:42.323: E/AndroidRuntime(628): Caused by: java.lang.NullPointerException 
02-29 19:54:42.323: E/AndroidRuntime(628): at com.remotedata.firstapp.DataconectActivity.onCreate(DataconectActivity.java:54) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 
02-29 19:54:42.323: E/AndroidRuntime(628): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 
02-29 19:54:42.323: E/AndroidRuntime(628): ... 11 more 
02-29 19:54:42.334: I/dalvikvm(628): threadid=7: reacting to signal 3 
02-29 19:54:42.334: E/dalvikvm(628): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
+1

스택 추적은 54 행의'onCreate()'에 오류가 있음을 나타냅니다.이 행을 보면 강력한 단서를 얻을 수 있습니다. 또는이 코드에서 54 행이 무엇인지 말할 수 있습니다. –

+0

나는 이미 그 점을 보았 기 때문에 그 줄은 startActivity (bi)이다; 하지만 이것은 화재 및 잊어 버린 의도입니다 –

+0

adv_search.class가이 활동입니까? – kosa

답변

1

당신이 준 코드에 따르면, NullPointerException을 생산할 수있는 두 개의 선이있다.

어느 것이 searchopt가 null이기 때문에 (R.id.searchtxt 당신에게 현재의 레이아웃을 ?? 속하지 않음) 아니면 null의 btmsearch (R.id.searchbtm 당신에게 현재의 레이아웃을 속하는가?) 다음의

+0

doh !! 멍청한 실수 searchtxt는 samelayout의 또 다른 텍스트 뷰 ID입니다! –

0

모든 사실입니다 한 줄의 코드는 : 코드 줄에 도달하면 괄호 안에는 아무 것도 평가되지 않기 때문에 오류가 그 라인에있는 경우

searchopt.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent bi = new Intent(getApplicationContext(), adv_search.class); 
     startActivity(bi); 
    } 
}); 

, 그것은 null의 searchopt해야합니다. 레이아웃을 다시 확인해야합니다. ID가 advsearchtxt 인 레이아웃에 실제로 뷰가 있는지 확인하고 실제로 TextView의 인스턴스인지 확인하십시오.