-
[안드로이드] Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference안드로이드(java)/에러 관련 2018. 6. 2. 22:23
Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
프레그먼트에 버튼을 하나 넣고 다른 프레그먼트 화면으로 전환하려고 했는데 이러한 에러가 출력되었다. ( mainFragment <-> menuFragment 버튼 클릭 시 메인, 메뉴 화면 전환 )
문제가 뭔지 찾아보니 프레그먼트이기 때문에 activity에서 findViewById 처럼 적용 되는게 아니라
activity를 통해서 전환되야 하는것이라서 그냥 findViewById는 안된다.
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_menu, container, false);
이렇게 하나의 인플레이터를 참조변수에 넣어준 후에 rootView.findViewById로 하니까 이상없이 잘 실행되었다.
public class FragmentMenu extends Fragment {
MainActivity activity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
activity = (MainActivity)getActivity();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_menu, container, false);
Button btn2 = (Button) rootView.findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
activity.onFragmentChanged(0);
}
});
return rootView;
}
}'안드로이드(java) > 에러 관련' 카테고리의 다른 글
[안드로이드] FATAL EXCEPTION: OkHttp Dispatcher (0) 2018.11.13 [안드로이드] Attempt to write to null array 에러 (0) 2018.09.01 [안드로이드] install_failed_invalid_apk (0) 2018.06.02 [안드로이드] AysncTask 재사용시 뜨는 에러 구문 : Cannot execute task: the task has already been executed (a task can be executed only once) (0) 2018.06.02 [안드로이드] Unable to start activity ComponentInfo 에러 (0) 2018.06.02