프로그래밍[Univ]/Android

[Android] Inflation & Activity추가

Cloud Travel 2012. 1. 24. 12:44
* 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으로 응답보내는 코드 작성
  - 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정의