* Inflation(인플레이션)
- XML레이아웃에 정의된 내용이 메모리상에 객체화 되는 과정
- 이 과정에 포함되있지 않는 객체는 참조할 수 없다.(Fatal Error)
- setOnContentView()메소드에 의해서 실행된다.
ⓐ 내부적으로 화면에 나타낼 View를 지정
ex) setOnContentview(R.out.main)
ⓑ 메모리상에 XML레이아웃에 정의된 것을 객체화
* LayoutInflater : 화면의 일부를 다른 XML사용하는 것
ⓐ 메인레이아웃에 부분레이아웃이 들어갈 자리를 만든다.
<LinearLayout android:id="@+id/sublayout" ... >
ⓑ 부분레이아웃을 만듬
ex) subView.xml을 생성해 레이아웃을 정의했다. 그리고 이 레이아웃은 LinearLayout으로 정의됬다.
ⓒ 자바파일에서 부분레이아웃의 객체를 참조한다. (컨텐츠를 따로 추가할 부모 레이아웃을 선택)
ex) Linearlayout contents = (LinearLayout)findViewById(R.id.sublayout);
ⓓ LayoutInflater 객체 참조 ( Inflater = Inflation시키는 행위 주체자)
ex) LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
> System Service로 제공되어 있는 것을 사용한다.
ⓔ Inflaction 실시
> inflater.inflate(R.layout.subView, content, true); // 부모레이아웃에 content(subView.xml)를 추가
ⓕ subView.xml 가 Inflation되어 사용이 가능하다.
* Activity 추가하는 과정
ⓐ 새로운 Activity와 그 Activity에 해당하는 XML 생성
ⓑ 새로운 Activity Code, XML 코드 정의
ⓒ MainActivity에 새로운 Activity의 호출코드작성, 응답처리코드 작성
- 호출코드에는 두 가지 방법이 존재한다.(새로운 Activity가 실행되는 Method)
> startActivity(INTENT) : 단순히 Activity를 실행하는 것
> startActivityForResult(INTENT, requestCode) : 새로운 Activity로부터 정보를 받을 필요가 있을 경우
※ requestCode : 각각 어떤 엑티비티에서 돌아온 값인지 구분해주는 구분자
- 응답처리코드 작성
> startActivityForResult() Method로 작성했을 경우 그에 대한 응답코드를 작성해줘야한다.
> onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
// 처리할 코드 구현
}
ⓓ 새로운 Actvitiy에서 Main으로 응답보내는 코드 작성
- XML레이아웃에 정의된 내용이 메모리상에 객체화 되는 과정
- 이 과정에 포함되있지 않는 객체는 참조할 수 없다.(Fatal Error)
- setOnContentView()메소드에 의해서 실행된다.
ⓐ 내부적으로 화면에 나타낼 View를 지정
ex) setOnContentview(R.out.main)
ⓑ 메모리상에 XML레이아웃에 정의된 것을 객체화
* LayoutInflater : 화면의 일부를 다른 XML사용하는 것
ⓐ 메인레이아웃에 부분레이아웃이 들어갈 자리를 만든다.
<LinearLayout android:id="@+id/sublayout" ... >
ⓑ 부분레이아웃을 만듬
ex) subView.xml을 생성해 레이아웃을 정의했다. 그리고 이 레이아웃은 LinearLayout으로 정의됬다.
ⓒ 자바파일에서 부분레이아웃의 객체를 참조한다. (컨텐츠를 따로 추가할 부모 레이아웃을 선택)
ex) Linearlayout contents = (LinearLayout)findViewById(R.id.sublayout);
ⓓ LayoutInflater 객체 참조 ( Inflater = Inflation시키는 행위 주체자)
ex) LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
> System Service로 제공되어 있는 것을 사용한다.
ⓔ Inflaction 실시
> inflater.inflate(R.layout.subView, content, true); // 부모레이아웃에 content(subView.xml)를 추가
ⓕ subView.xml 가 Inflation되어 사용이 가능하다.
* Activity 추가하는 과정
ⓐ 새로운 Activity와 그 Activity에 해당하는 XML 생성
ⓑ 새로운 Activity Code, XML 코드 정의
ⓒ MainActivity에 새로운 Activity의 호출코드작성, 응답처리코드 작성
- 호출코드에는 두 가지 방법이 존재한다.(새로운 Activity가 실행되는 Method)
> startActivity(INTENT) : 단순히 Activity를 실행하는 것
> startActivityForResult(INTENT, requestCode) : 새로운 Activity로부터 정보를 받을 필요가 있을 경우
※ requestCode : 각각 어떤 엑티비티에서 돌아온 값인지 구분해주는 구분자
- 응답처리코드 작성
> startActivityForResult() Method로 작성했을 경우 그에 대한 응답코드를 작성해줘야한다.
> onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
// 처리할 코드 구현
}
ⓓ 새로운 Actvitiy에서 Main으로 응답보내는 코드 작성
- setResult(int resultCode, Intent data);
// method 이용 : 이전 Activity의 onActivityResultI()의 resultCode, data로 파라미터를 넘긴다.
// requestCode는 이미 Activity가 알고 있으므로(호출할대 지정하므로) 알아서 보낼 것이다.
※ Intent를 이용하여 Data정보 교환하기
> Intent에 data값 넣기(부가데이터 값 넣기/Hash Table과 유사하게 정보교환을 한다)
> 기본데이터 : putExtra(),getExtra()를 이용하여 Intent에 정보를 넣거나 뺄수 있다.
ex) putExtra("KEY","VALUE"); // VALUE Type으로는 기본데이터 타입인 String, int, boolean을 지원해준다
> 객체 : Parelable Interface를 구현하여 전달한다.
ⓔ Manifest에 Activity내용을 추가
- Manifest에 <Activity> Tag정의
// method 이용 : 이전 Activity의 onActivityResultI()의 resultCode, data로 파라미터를 넘긴다.
// requestCode는 이미 Activity가 알고 있으므로(호출할대 지정하므로) 알아서 보낼 것이다.
※ Intent를 이용하여 Data정보 교환하기
> Intent에 data값 넣기(부가데이터 값 넣기/Hash Table과 유사하게 정보교환을 한다)
> 기본데이터 : putExtra(),getExtra()를 이용하여 Intent에 정보를 넣거나 뺄수 있다.
ex) putExtra("KEY","VALUE"); // VALUE Type으로는 기본데이터 타입인 String, int, boolean을 지원해준다
> 객체 : Parelable Interface를 구현하여 전달한다.
ⓔ Manifest에 Activity내용을 추가
- Manifest에 <Activity> Tag정의