Tason
[Android Studio] Navigation view, setOnClickListener, NullPointerException 오류 본문
[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에 있는
다른 요소들도 이벤트를 생성할 수 있습니다. 아이콘 밑의 텍스트뷰 두 개에도 똑같이 이벤트를 적용한 예입니다.