xml레이아웃파일을 보면 

디자인 도구라고 생각 할 수도 있는데,

디자인 도구에서 주로 화면을 만들 었다.

 

근데 원본은 XML파일 이라는 것을 이미 알고 있을 것이다.

이 원본 XML파일을 보게 되면 버튼이라고 한다면

Button태그가 있을 것이다.

 

<Button> 태그가 레이아웃에 정의가 되어 있는데,

이 <Button>태그는 실제 버튼이 아니다.

그러니깐 우리가 프로그래밍 언어를 했다고 한다면,

화면에 버튼이 보인다 or 화면을 클릭 했을 때 무슨 동작을 한다라고 하며는 

 

메모리에 버튼이 만들어 져있기 때문이다.

그래서 이 메모리에서 버튼이 만들어져 있기 때문이다.

그래서 이 메모리에 버튼이 만들어지는 것은 

객체지향에서 new Button이라는 것을 실행해서 만들게 되는 것인데,

이 과정에는 없다.

 

결국에는 개발자가 이 같은 과정을 해주는게 아니라,

안드로이드 시스템에서 해준다는 거다.

그 시스템에서 해주는 역할을 

"레이아웃인플레이터"라고 하는게 있어서 그 역할을 해주게 된다.

(레이아웃인플레이터가 그 역할을 한다는 거다)

 

그래서 XML파일에 있는 Button을 

실제 메모리에 Button으로 만들어주는 과정을

"인플레이션" 과정 이라고 한다.

 

그래서

"레이웃인플레이션"이라고 하는 것을 이해하면

아~~ 동작이 이렇게 되는 구나   라는 것을  알 수 있을 것이다.

 

 

 


 

 

 

setContentView가 내부적으로 "레이아웃인플레이션"을 해주는거다.

즉, 메모리에 버튼을 객체로 만들어 주는 역할을 하게 된다.

그래야 실제 버튼이 만들어 진다.

근데 , 위에 코드를 실행하면 에러가 난다.

왜냐하면, 실제 버튼이 메모리에 만들어 져있지 않은데,

그 버튼에다가 뭔가 동작을 시킬려고 하니깐,

NullpointException이 발생하게 된다.

그래서 코드의 순서만 바꾸어도 에러가 발생한다.

 

그래서 "레이아웃인플레이션", 즉 메모리에 객체화하는 과정에 대해서 알고 있으면 된다.

 

 

 

 


 

 

Activity라고 하는 화면에서는

setContentView()라는 메소드가 있어서

거기다가 XML레이아웃 넣어서 XML레이아웃을 메모리 상에 객체화를 해준다.

( setContentView() 도 레이아웃인플레이션의 일부임 )

( setContentView() = 레이아웃인플레이션 )

 

 

 


 

 

 

 

만약 "전체화면"이 아니고 "부분화면"이라고 하며는

전체화면 안에 들어가는 일부분을 말한다.

거기서는 setContentView()라는 것을 사용 할 수가 없게 된다!!!!!!!!!!!

그래서

"레이아웃인플레이터서비스"라는 것을 이용해서

직접 인플레이션을 해줘야 한다.

 

 

 

그러면 "레이아웃인플레이터서비스"라고 하는 것을 이용해서 

직접 인플레이션하는 과정(메모리에 객체화하는 과정)을 해야한다.

 

 

XML레이아웃에 있는 파일은  그냥 파일일 뿐이다!!!!!!

그 파일 안에 Button태그가 있다고 해서 바로 버튼이 되는 것이 아니다!!

 

인플레이션 하는 과정(메모리에 객체화하는 과정)을 꼭 해야 사용 할 수 있는 것이다.

 

 

 

 

 


 

 

 

 

- 참고 -

 

getSystemService() 메서드를 사용하여 성공적으로 객체를 생성하게 된다면 대부분 'Manager'라는 접미어가 붙은 관리 매니저 객체를 반환한다.

 

getSystemService(String name) 메서드의 매개변수를 사용하여 다음 표와 같은 객체를 얻는다.

 

 

 

 


 

 

 

 

- 사용 예 -

sub1.xml의 파일 안에 들어 있는 내용을 inflater(LayoutInflater)가  메모리에 올린거다,,

그런다음에 container에 붙여 준거다.

이게 "레이아웃인플레이션"의 과정이다

 

그리고 여기서 "레이웃인플레이션"을 하고 나서,

"부분화면"이든, "전체화면"이든 "인플레이션"을 하고 나며는

그 안에 들어가 있는 위젯(버튼, 등등)을 id를 이용해서 찾아서

찾아서 사용 할 수가 있다.

 

- 결과 -