fragment 에서 findViewById 사용법 질문드립니다~~

조회수 2002회

이미지

이제 막 안드로이드 스튜디오를 사용해봐서 하나도 모르는 초보입니다ㅠㅠㅠㅠ fragment를 사용하는데 findViewById를 어떻게 사용해야할 지 모르겠습니다. 저렇게 실행을 하면 오류가 발생합니다.

오류 : Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference at com.example.myapplication1.Fragment1.onCreate

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • onCreate말고 onViewCreated 호출 이후에 사용하시면 될거에요.

  • Fragment 코드에서 Ctrl+O를 누르시면 Override Members라는 창이 뜨면서 부모 클래스에서 가져와 덮어쓸 수 있는 클래스 멤버들이 나타나게 됩니다.

    그 창에서 onViewCreated를 키보드로 입력하시면 알아서 onViewCreated()라는 메서드가 선택이 됩니다.

    사진: 링크

    이 상태에서 OK를 누르시면 코드에 onViewCreated가 알아서 추가되는데, 이제 거기 안에서 getView()로 가져온 프래그먼트의 최상단 뷰를 통해 findViewById()를 호출하시면 됩니다.

    무슨 언어를 쓰시는 지 몰라서 다 준비해봤습니다.

    Java

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    
        getView().findViewById(...);
    }
    

    Kotlin

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
    
        getView().findViewById(...)
    }
    

    이렇게 해도 잘 안 되면 바로 말씀해주세요!!!

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)