반응형
fragment를 공부하던 중 activity와 값을 주고 받는 부분에서 문제가 생겼다. activity에서 fragment로 값을 줄 때는 argument와 bundle로 줄 수 있는데 fragment에서 activity로 값을 줄 때는 interface를 직접 만들어 넘겨야 했기 때문에다.
이렇게 인터페이스를 만들어주고, findViewById를 통해 뷰를 연결하려고 하니 예시대로 진행되지않았다. fragment에서 뷰를 인지하지 못하고 있어 생긴 문제였다.
구글링을 통해 알아낸 결과, getView()를 달아서 해결할 수 있었다.
https://developer.android.com/reference/android/app/Fragment#getView()
Get the root view for the fragment's layout (the one returned by onCreateView(LayoutInflater, ViewGroup, Bundle)), if provided.
getView는 onCreateView에서 inflate된 view, 쉽게 말해 연결된 레이아웃을 가져다주는 역할을 갖고있다는 것을 알 수 있었다.
이때 nullsafe하게 만들기 위해 getView()?라고 해주었으며 getView로 가져온 pass역시 pass?로 nullsafe하게 만들어줬다.
이렇게 보낸 데이터는
상속을 통해 보내주면 된다. 아까 interface 내부에 선언된 함수가 내용을 갖고있지 않으므로 상속받은 클래스에서도 해당 함수를 override 해줘야한다.
Listener를 직접 만들어 사용하는 과정이 굉장히 생소하여 어려웠다.
"댓글, 공감 버튼 한 번씩 누르고 가주시면 큰 힘이 됩니다"
반응형