이전 과정을 완료했다면 텍스트 필드와 Send 버튼이 있는 단일 화면으로 구성된 활동을 보여주는 앱이 있을 것입니다. 이 과정에서는 사용자가 Send 버튼을 탭할 때 메시지를 표시하도록 새 활동을 시작하는 MainActivity
에 몇 가지 코드를 추가합니다.
Send 버튼에 응답
다음 단계를 따라, Send 버튼을 탭할 때 호출되는 MainActivity
클래스에 메서드를 추가하세요.
app > java > com.example.myfirstapp > MainActivity 파일에서 다음
sendMessage()
메서드 스터브를 추가합니다.Kotlin
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { // Do something in response to button } }
자바
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** Called when the user taps the Send button */ public void sendMessage(View view) { // Do something in response to button } }
Android 스튜디오에서는 메서드 인수로 사용되는
View
클래스를 결정할 수 없으므로 오류가 발생할 수도 있습니다. 오류를 해결하려면View
선언을 클릭하고 커서를 그 위에 둔 채로 Alt+Enter(Mac의 경우 Option+Enter)를 눌러 빠른 수정을 실행합니다. 메뉴가 표시되면 Import class를 선택합니다.- activity_main.xml 파일로 돌아가 다음과 같이 버튼에서 메서드를 호출합니다.
- Layout Editor에서 버튼을 선택합니다.
- Attributes 창에서 onClick 속성을 찾고 이 속성의 드롭다운 목록에서 sendMessage [MainActivity]를 선택합니다.
이제 버튼을 탭하면 시스템에서
sendMessage()
메서드를 호출합니다.이 메서드의 세부정보를 메모해 두세요. 시스템에서 메서드를
android:onClick
속성과 호환되는 것으로 인식하는 데 필요합니다. 특히 이 메서드에는 다음과 같은 특성이 있습니다. - 다음은 이 메서드를 채워 텍스트 필드의 콘텐츠를 읽고 텍스트를 다른 활동으로 전달합니다.
인텐트 빌드
Intent
는 개별 구성요소(예: 두 개의 활동) 간에 런타임 바인딩을 제공하는 객체입니다. Intent
는 어떤 작업을 하려는 앱의 의도를 나타냅니다. 매우 다양한 작업에 인텐트를 사용할 수 있지만 이 과정에서는 인텐트가 다른 활동을 시작합니다.
MainActivity
에서 다음과 같이 EXTRA_MESSAGE
상수와 sendMessage()
코드를 추가하세요.
Kotlin
const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE" class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { val editText = findViewById<EditText>(R.id.editText) val message = editText.text.toString() val intent = Intent(this, DisplayMessageActivity::class.java).apply { putExtra(EXTRA_MESSAGE, message) } startActivity(intent) } }
자바
public class MainActivity extends AppCompatActivity { public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** Called when the user taps the Send button */ public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.editText); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } }
Android 스튜디오에서 Cannot resolve symbol 오류가 다시 발생할 것입니다. 오류를 해결하려면 Alt+Enter(Mac의 경우 Option+Return)를 누르세요. 다음을 가져오게 됩니다.
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.os.Bundle import android.view.View import android.widget.EditText
자바
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.EditText;
여전히 해결되지 않은 DisplayMessageActivity
관련 오류는 다음 섹션에서 해결할 수 있습니다.
sendMessage()
에서 이루어지는 작업은 다음과 같습니다.
Intent
생성자는 두 매개변수Context
와Class
를 사용합니다.Context
매개변수가 먼저 사용됩니다.Activity
클래스가Context
의 서브클래스이기 때문입니다.putExtra()
메서드는EditText
값을 인텐트에 추가합니다.Intent
는 데이터 유형을 extras라는 키-값 쌍으로 전달할 수 있습니다.다음 활동에서 키를 사용하여 텍스트 값을 검색하기 때문에 키는 공개 상수
EXTRA_MESSAGE
입니다. 앱의 패키지 이름을 접두사로 사용해 인텐트 extras의 키를 정의하는 것이 좋습니다. 그러면 앱이 다른 앱과 상호작용하는 경우 키가 고유하게 유지됩니다.startActivity()
메서드는Intent
로 지정된DisplayMessageActivity
의 인스턴스를 시작합니다. 이제 클래스를 만들어야 합니다.
두 번째 활동 만들기
두 번째 활동을 만들려면 다음 단계를 따르세요.
- Project 창에서 app 폴더를 마우스 오른쪽 버튼으로 클릭하고 New > Activity > Empty Activity를 선택합니다.
- Configure Activity 창에서 Activity Name에 'DisplayMessageActivity'를 입력합니다. 다른 모든 속성은 기본값으로 그대로 두고 Finish를 클릭합니다.
Android 스튜디오는 다음 세 가지 작업을 자동으로 실행합니다.
DisplayMessageActivity
파일을 만듭니다.- 레이아웃 파일
activity_display_message.xml
을 만들고 이 파일은DisplayMessageActivity
파일과 상응합니다. - 필수
<activity>
요소를AndroidManifest.xml
에 추가합니다.
앱을 실행하고 첫 번째 활동에서 버튼을 탭하면 두 번째 활동이 시작되지만 이 활동은 비어 있습니다. 두 번째 활동이 템플릿에서 제공한 빈 레이아웃을 사용하기 때문입니다.
텍스트 뷰 추가

새로운 활동에는 빈 레이아웃 파일이 포함됩니다. 다음 단계를 따라 텍스트 뷰를 메시지가 표시되는 곳에 추가하세요.
- app > res > layout > activity_display_message.xml 파일을 엽니다.
- 툴바에서 Enable Autoconnection to Parent
를 클릭합니다. 그러면 자동 연결이 사용 설정됩니다. 그림 1을 참조하세요.
- Palette 패널에서 Text를 클릭하고 TextView를 레이아웃으로 드래그한 다음 레이아웃의 상단 중앙 쯤에서 놓아 표시되는 수직 선에 맞춥니다. 자동 연결은 수평 중앙에 뷰를 배치하기 위해 왼쪽과 오른쪽 제약조건을 추가합니다.
- 텍스트 뷰 상단에서 레이아웃 상단까지 제약 조건을 하나 더 만들어 그림 1과 같이 표시되도록 합니다.
선택사항으로 Attributes 창의 Common Attributes 패널에서 textAppearance를 확장하고 textSize 및 textColor와 같은 속성을 변경하면 텍스트 스타일을 조정할 수 있습니다.
메시지 표시
이 단계에서는 두 번째 활동을 수정하여 첫 번째 활동에서 전달된 메시지를 표시합니다.
DisplayMessageActivity
에서 다음 코드를onCreate()
메서드에 추가합니다.Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_display_message) // Get the Intent that started this activity and extract the string val message = intent.getStringExtra(EXTRA_MESSAGE) // Capture the layout's TextView and set the string as its text val textView = findViewById<TextView>(R.id.textView).apply { text = message } }
자바
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); // Get the Intent that started this activity and extract the string Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); // Capture the layout's TextView and set the string as its text TextView textView = findViewById(R.id.textView); textView.setText(message); }
Alt+Enter(Mac의 경우 Option+Return)를 눌러 다음과 같이 다른 필요한 클래스를 가져옵니다.
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.os.Bundle import android.widget.TextView
자바
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView;
상향 탐색 추가
기본 진입점이 아닌 앱의 각 화면(홈 화면이 아닌 모든 화면)에서는 사용자를 앱 계층 구조에서 논리적 상위 화면으로 안내하는 탐색 기능을 제공해야 합니다. 이렇게 하려면 앱 바에 Up 버튼을 추가하세요.
Up 버튼을 추가하려면 AndroidManifest.xml
파일에서 어떤 활동이 논리적 상위 요소인지 선언해야 합니다.
app > manifests > AndroidManifest.xml에서 파일을 열고 DisplayMessageActivity
의 <activity>
태그를 찾아 다음으로 바꿉니다.
<activity android:name=".DisplayMessageActivity" android:parentActivityName=".MainActivity"> <!-- The meta-data tag is required if you support API level 15 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity>
이제 Android 시스템에서 Up 버튼을 앱 바에 자동으로 추가합니다.
앱 실행
툴바에서 Apply Changes 를 클릭하여 앱을 실행합니다. 앱이 열리면 텍스트 필드에 메시지를 입력하고 Send를 탭하여 두 번째 활동에 메시지가 표시되는지 확인합니다.

이것으로 첫 번째 Android 앱을 빌드했습니다.
Android 앱 개발에 관한 기본 사항을 계속 알아보려면 첫 앱 빌드로 돌아가 거기서 제공되는 다른 링크를 따라가세요.