본문 바로가기

소프트웨어/Android/Java/Ndk

안드로이드] findViewById 가 계속 Null을 뿜을때

이때 처리는 간단하다.

 

일단 이유부터 알자면..

 

 

onCreate가 시작하자마자 setContentView를 이용해 사용자가 추가하려는 main Xml의 id들이 등록되었다.

그런데 사용자가 또 다른 xml의 추가를 원할때(즉, 메인 xml파일이아니라 따른 레이아웃 xml파일을 쓰려고 할때) 당연히 사용자는 '내가 xml파일을 추가시켰는데 당연히 되야지 왜 안될까? 라는 생각을 갖게된다.

 

이런...내가그랬다.

 

 

이럴때는 동적으로 레이아웃을 추가해주어야하는데

 

LayoutInflater inflater0 = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 LinearLayout linear0=(LinearLayout)inflater0.inflate(R.layout.ms_custom_touchcontroller, null);
 LinearLayout.LayoutParams paramlinear0 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
 addContentView(linear0, paramlinear0); 

아래와같이 인플레이터를 사용하여 사용하고자 하는 xml파일을 등록해주고 사용해야한다.