2012-07-20 3 views
0

버튼에 onClickListener를 호출하고 있습니다. 나는 이것을 여러 번 해봤으며 이전에 효과가있었습니다. 그러나 어쨌든 그것은 이번에 NullPointerException을 던졌습니다. 여러 게시물을 살펴 보았지만 아직 이해하지 못했습니다.setOnClickListener가 NullPointerException을 throw합니다.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.search); 

    Button viewRequests = (Button) findViewById(R.id.view_requests); 

    viewRequests.setOnClickListener(new View.OnClickListener() { // NPException occurred here 

    @Override 
    public void onClick(View v) { 

     System.out.println("View request is clicked"); 

    } 
}); 
} 

리소스 파일 :

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingLeft="20dp" 
    android:paddingRight="20dp" 
    android:paddingTop="10dp" 
    android:paddingBottom="10dp" > 

    <Button 
     android:id="@+id/view_requests" 
     android:background="@drawable/my_button" 
     android:layout_width="120dp" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_alignParentTop="true" 
     android:paddingTop="3dp" 
     android:paddingBottom="3dp" 
     android:textSize="10sp" 

     android:text="View Work Requests" /> 

</RelativeLayout> 

편집

로그 캣

07-20 17:26:40.411: D/AndroidRuntime(334): Shutting down VM 
07-20 17:26:40.411: W/dalvikvm(334): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
07-20 17:26:40.431: E/AndroidRuntime(334): FATAL EXCEPTION: main 
07-20 17:26:40.431: E/AndroidRuntime(334): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rxprojects/com.rxprojects.activities.SearchActivity}: java.lang.NullPointerException 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1487) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.widget.TabHost.setCurrentTab(TabHost.java:326) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.view.View.performClick(View.java:2485) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.view.View$PerformClick.run(View.java:9080) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.os.Handler.handleCallback(Handler.java:587) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.os.Looper.loop(Looper.java:123) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.app.ActivityThread.main(ActivityThread.java:3683) 
07-20 17:26:40.431: E/AndroidRuntime(334): at java.lang.reflect.Method.invokeNative(Native Method) 
07-20 17:26:40.431: E/AndroidRuntime(334): at java.lang.reflect.Method.invoke(Method.java:507) 
07-20 17:26:40.431: E/AndroidRuntime(334): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-20 17:26:40.431: E/AndroidRuntime(334): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-20 17:26:40.431: E/AndroidRuntime(334): at dalvik.system.NativeStart.main(Native Method) 
07-20 17:26:40.431: E/AndroidRuntime(334): Caused by: java.lang.NullPointerException 
07-20 17:26:40.431: E/AndroidRuntime(334): at com.rxprojects.activities.SearchActivity.onCreate(SearchActivity.java:226) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-20 17:26:40.431: E/AndroidRuntime(334): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
07-20 17:26:40.431: E/AndroidRuntime(334): ... 18 more 
+0

정확한 오류 메시지를 게시 하시겠습니까? – maxko87

+1

클릭 수신기를 제거하면 화면에 표시된 버튼입니까? 또한 단지'search.xml'라고 불렀고'/ res/layout /'폴더에있는 layout xml 파일을 명확히하기 위해서입니까? – FoamyGuy

+0

이상한. 의심스러운 로그가 있습니까? 깨끗이하고 다시 빌드하십시오. –

답변

5

당신이 전달하는 레이아웃 파일이 실제로 깨끗한 R.layout.search하고 프로젝트를 다시 빌드합니다.

+0

아, 맞습니다. 버튼이 부풀려진 레이아웃 파일에 있습니다. 어떻게 그 setOnClickListener합니까? – Harsh

+0

'search'에 버튼이있는 새로운 레이아웃'quick_search'를 부 풀었습니다. 어떻게하면 'quick_search'의 요소에 setOnClickListener를 설정할 수 있습니까? – Harsh

+0

당신은 실제로 잘하고 있습니다. ** 이미 ** 부 풀린 레이아웃 내에서보기 만 팽창시킬 수 있습니다. 그래서 레이아웃에 실제로 해당 id가있는 버튼이 포함되어 있다면 "깨진"R.java 파일과 관련된 것일 수 있다고 말한 것입니다. 빌드 프로젝트를 깨끗하게 정리하면 해결할 수 있습니다. 그렇지 않으면 팀이 귀하의 질문에 대한 직접적인 코멘트에서 당신에게 말한 것을 시도하십시오 – Korcholis

2

프로젝트에 search.xml 사본이 두 개 이상 있는지 확인하십시오. 아마도 당신은 초상화/풍경에 대한 별도의 버전 또는 다른 화면 크기에 특정한 버전을 가지고있을 것입니다. 이 경우 모든 버전의 버튼에 android:id="@+id/view_requests" 속성이 설정되어 있어야합니다.

+0

나는 단 하나의 사본을 가지고 있습니다. 머리를 가져 주셔서 고마워. – Harsh

+0

나는 같은 문제가 있었다. 하지만 AndroidManifest.xml에서 세로 방향을 제거하면 문제가 해결됩니다. –

0

.xml fime 및 .java 파일에서 Button의 ID가 동일한 지 확인하십시오.

관련 문제