Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

Tason

[Android Studio] Navigation view, setOnClickListener, NullPointerException 오류 본문

Tool/Android Studio

[Android Studio] Navigation view, setOnClickListener, NullPointerException 오류

Yan g 2019. 12. 23. 17:16


" Java.lang.NullPointerException: Attemp to invoke virtual method "void android.vidget.ImageView.setOnClickListener(android.view.View$OnClickListener)" on a null object reference "



안드로이드 스튜디오의 네비게이션 뷰 를 활용하면서 발생한 오류입니다. 


위의 사진은 네비게이션 뷰의 헤더부분입니다.

아이콘을 클릭했을 때 로그인 액티비티로 넘어가게 하는 작업 을 진행하던 도중에 오류가 발생했습니다.


activity_first.xml이며 FirstActivity.java에서 네비게이션뷰 id인 nav_view를 호출하여 네비게이션 드로어를 띄웁니다.

제가 호출하려는 ImageView는 nav_header_main이라는 레이아웃에 있으며 네비게이션뷰에서 참조하고 있습니다.


nav_header_main입니다.


FirstActivity입니다.

ImageView imageView = findViewById(R.id.imageView);

클릭이벤트가 발생하면 인텐트를 사용하여 액티비티를 전환하기 위해 제가 직접 수정한 부분이고 오류의 발생 원인입니다.

(그 윗 부분의 코드는 네비게이션 드로어 액티비티 생성 시에 자동으로 기입되어 있습니다.)




Trouble Shooting


네비게이션 뷰에서 헤더의 요소를 호출할 때 findViewById를 사용하여 직접적으로 호출할 수 없습니다.

getHeaderView(index i) 를 사용하여 작업합니다.


다음과 같이 위에서 정의한 headView를 사용하여 nav_header_main에 있는 

다른 요소들도 이벤트를 생성할 수 있습니다. 아이콘 밑의 텍스트뷰 두 개에도 똑같이 이벤트를 적용한 예입니다.



Comments