안드로이드용 어플리케이션을 개발하려면 "하나의 액티비티" 만으로는 제데로된 어플리케이션을 개발할 수 없습니다. 이번 강좌에서는 액티비티를 추가하는 방법에 대해 알아보도록 하겠습니다.
액티비티를 추가해주기 위해서는 아래의 두 가지 작업을 수행해주어야 합니다.
- 메니페스트 파일(AndroidManifest.xml)에 액티비티 등록하기
- 액티비티 소스 코드 만들기
1. 메니페스트 파일에 액티비티 등록하기
이클립스 ADT로 열어본AndroidManifest.xml
여러가지 속성을 설정할 수 있는 화면들과 함께 어플리케이션의 여러 구성요소들을 등록할 수 있는 Application Nodes 화면이 화면 좌측 하단에 있습니다. 이곳에서 액티비티 뿐만 아니라 다른 액티비티 구성요소 (서비스, 컨텐트 프로바이더 등)도 추가해줄 수 있습니다.
액티비티를 추가하기 위해 Application Nodes 부분의 Add... 버튼을 클릭합니다.
Add.. 화면을 클릭하면 다음과 같은 대화상자가 나타나는데, 이곳에서 "Activity"를 클릭합니다.
"OK" 버튼을 클릭한 후, 추가된 Activity를 선택한 후 오른쪽의 Attributes 화면을 보면 다음과 같은 화면이 보일 것입니다.
Add.. 화면을 클릭하면 다음과 같은 대화상자가 나타나는데, 이곳에서 "Activity"를 클릭합니다.
"OK" 버튼을 클릭한 후, 추가된 Activity를 선택한 후 오른쪽의 Attributes 화면을 보면 다음과 같은 화면이 보일 것입니다.
2. 액티비티 소스 코드 만들기
메니페스트 파일에 액티비티를 선언하였으니, 이 액티비티의 실질적인 동작을 구현할 자바 소스 코드를 만들어야 합니다.
파란색으로 되어있는 Name* 을 클릭하여 새 클래스를 만들어줍시다.
위와 같은 대화상자가 뜨게 될 것입니다. 다른 것은 특별히 건드릴 필요가 없고, 클래스의 이름 (일반적으로 액티비티의 이름과일하게 설정합니다) 을 입력합니다. 이름을 입력했으면, Finish 버튼을 누릅시다.
Finish 버튼을 누르면, 다음과 같이 새로운 코드 파일이 생성이 됩니다. 처음 프로젝트를 만들 때와 동일하게 onCreate() 메소드까지 추가되어있습니다. :) 단, 액티티의 화면을 표시해주는 메소드인 setContentView()메소드가 추가되어있지 않으므로, 이 상태로 이 액티비티를 호출하면 화면에는 아무것도 표시되지 않게 됩니다.
여기까지 하셨다면, 호출 대상을 명확히 지정하는 명시적 인텐트(Explicit Intent)를 이용하여 이 액티비티를 호출할 수 있습니다. 하지만, 인텐트 필터를 정의하지 않았기에 암시적 인텐트(Implicit Intent)를 통해 호출될 수는 없습니다.
인텐트에 대한 자세한 설명 및 암시적 인텐트에 대한 내용은 아래의 글을 참고하세요.
위와 같은 대화상자가 뜨게 될 것입니다. 다른 것은 특별히 건드릴 필요가 없고, 클래스의 이름 (일반적으로 액티비티의 이름과일하게 설정합니다) 을 입력합니다. 이름을 입력했으면, Finish 버튼을 누릅시다.
Finish 버튼을 누르면, 다음과 같이 새로운 코드 파일이 생성이 됩니다. 처음 프로젝트를 만들 때와 동일하게 onCreate() 메소드까지 추가되어있습니다. :) 단, 액티티의 화면을 표시해주는 메소드인 setContentView()메소드가 추가되어있지 않으므로, 이 상태로 이 액티비티를 호출하면 화면에는 아무것도 표시되지 않게 됩니다.
여기까지 하셨다면, 호출 대상을 명확히 지정하는 명시적 인텐트(Explicit Intent)를 이용하여 이 액티비티를 호출할 수 있습니다. 하지만, 인텐트 필터를 정의하지 않았기에 암시적 인텐트(Implicit Intent)를 통해 호출될 수는 없습니다.
인텐트에 대한 자세한 설명 및 암시적 인텐트에 대한 내용은 아래의 글을 참고하세요.
'어플리케이션 구성 > 액티비티(Activity)' 카테고리의 다른 글
방향변화에 대처하는 액티비티의 자세 Part.2 (부제 : 준비된 자만이 살아남는다) (0) | 2009.12.10 |
---|---|
방향 변화에 대처하는 액티비티의 자세 (부제 : 날 좀 내버려둬!) (4) | 2009.12.09 |
액티비티 생애주기, 눈으로 확인하자! (19) | 2009.10.11 |
액티비티와 태스크(Task) (6) | 2009.09.20 |
액티비티의 생애주기(Lifecycle) (13) | 2009.09.18 |