MyCloud

[안드로이드] Fragment에서 findViewById 에러 해결 방법 본문

Programming/Android

[안드로이드] Fragment에서 findViewById 에러 해결 방법

Swalloow 2016. 7. 12. 03:44



Fragment에서 findViewById error


Fragment에서 바인딩을 위해 findViewById() 함수를 사용한다면 다음과 같은 오류가 발생합니다.


java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference



이유는 아직 inflation 이전의 View에 컴포넌트를 부르는 함수를 호출하기 때문에 널 포인터 오류가 나는 것 입니다.

getView() 메서드를 통해 해결하는 방법도 있지만 가장 깔끔한 방법은 View 객체를 이용하는 것 입니다.


public class SearchFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Toast.makeText(this.getContext(), "This is SearchFragment", Toast.LENGTH_SHORT).show();
View v = inflater.inflate(R.layout.fragment_search, container, false);

TextView local = (TextView) v.findViewById(R.id.local);

return v;
}
}


위와 같이 View 객체에 현재 뷰를 담고 이를 이용하여 findViewById()를 호출하면 됩니다.




Comments