액티비티란 무엇이며 수동으로 추가하는 방법
1. 액티비티(Activity)란?
액티비티는 Android 앱에서 사용자 인터페이스를 포함하는 컴포넌트로, 주로 사용자와 상호작용하는 데 사용됩니다.
| 핵심 요점 | 설명 |
|---|---|
| 주요 역할 | UI 화면을 담당하고 사용자 상호작용(탭, 입력 등)을 처리함 |
| 개수 | 앱은 0개 이상의 액티비티를 포함할 수 있음 (액티비티가 없어도 순수 백그라운드 서비스 앱처럼 실행 가능) |
| 본질 | 각 액티비티는 하나의 전체 화면 창이나 화면에 해당함 |
2. 액티비티 수동으로 생성하기 (템플릿 사용 안 함)
2.1 프로젝트 생성
- 새 프로젝트를 만들고 ActivityDemo로 이름 지정
- 템플릿에서 Add No Activity 선택 (액티비티가 자동으로 생성되지 않음)
- 프로젝트 경로에 한글을 포함할 수 없음
- 생성 과정에서 인터넷 연결 필요 (Gradle 종속성 다운로드)

인터넷에 연결되지 않은 경우 다음 오류가 발생합니다:
Gradle 'ActivityDemo' project refresh failed Error:Cause: dl.google.comCode language: JavaScript (javascript)Gradle이 로드되지 않으면 프로젝트가 자동으로 패키지로 분할되지 않으며 액티비티를 정상적으로 추가할 수 없습니다.
2.2 액티비티 클래스 생성
java/cn.bamn.www.activitydemo/를 마우스 오른쪽 버튼으로 클릭 → New → Java Class


FirstActivity로 이름 짓고 AppCompatActivity를 상속받습니다:
package cn.bamn.www.activitydemo;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}Code language: JavaScript (javascript)
3. 레이아웃 파일 생성
3.1 새 레이아웃 만들기
res/layout을 마우스 오른쪽 버튼으로 클릭 → New → Layout Resource File

| 매개변수 | 값 |
|---|---|
| File name | first_layout |
| Root element | LinearLayout |

3.2 레이아웃 코드 작성
first_layout.xml을 열고 버튼을 추가합니다:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="FoxDevelop 참여하기" />
</LinearLayout>Code language: HTML, XML (xml)
3.3 주요 속성 설명
| 속성 | 설명 |
|---|---|
android:id="@+id/button" | 버튼에 고유 ID를 정의합니다. +는 현재 XML에서 새로 정의되는 ID임을 의미하며 기존 리소스에서 참조하는 것이 아닙니다 |
android:layout_width="match_parent" | 너비를 부모 컨테이너에 맞춤 |
android:layout_height="wrap_content" | 높이를 내용에 맞게 조정 |
android:text | 버튼에 표시되는 텍스트 |
+id와+없음의 차이:
@+id/xxx→ 새 ID 정의 (처음 생성할 때 사용)@id/xxx→ 기존 ID 참조 (레이아웃 간 참조 등)
4. 액티비티에서 레이아웃 로드하기
FirstActivity로 돌아가서 onCreate()에서 setContentView()를 호출합니다:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
}Code language: CSS (css)
| 코드 | 역할 |
|---|---|
setContentView() | XML 레이아웃 파일을 액티비티에 바인딩함 |
R.layout.first_layout | res/layout/first_layout.xml 레이아웃 참조 |
5. AndroidManifest.xml에 액티비티 등록하기
AndroidManifest.xml을 열고 <application> 태그 내에 등록합니다:
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>Code language: HTML, XML (xml)
| 설정 | 역할 |
|---|---|
android:name=".FirstActivity" | 액티비티 등록 (.은 현재 패키지 이름을 나타냄) |
MAIN + LAUNCHER | 시작 진입점으로 설정하며, 아이콘을 탭할 때 먼저 열림 |
등록되지 않은 액티비티는 사용할 수 없습니다. 시스템이
ActivityNotFoundException을 발생시킵니다.
액티비티