Skip to content

Most visited

Recently visited

navigation

다른 activity 시작

이전 과정을 완료했으면 텍스트 필드와 버튼이 포함된 activity(단일 화면)를 표시하는 앱이 있을 것입니다. 이 과정에서는 사용자가 Send 버튼을 클릭하면 메시지를 표시하기 위해 새 activity를 시작하는 몇 가지 코드를 MainActivity에 추가합니다.

참고: 이 과정에서는 여러분이 Android Studio 3.0을 사용하고 있다고 가정합니다.

Send 버튼에 응답

MainActivity.java에 다음과 같이 버튼에 의해 호출되는 메서드를 추가합니다.

  1. app > java > com.example.myfirstapp > MainActivity.java 파일에서 아래 나오는 것처럼 sendMessage() 메서드 스텁을 추가합니다.
    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 Studio는 메서드 인수로 사용되는 View 클래스를 처리할 수 없으므로 오류가 나타날 수도 있습니다. 따라서 커서를 View 선언부에 놓은 다음, Alt + Enter(또는 Mac의 경우 Option + Enter)를 눌러 빠른 수정을 수행합니다. (메뉴가 나타나면 Import class를 선택합니다.)

  2. 이제 activity_main.xml 파일로 돌아가서 버튼에서 이 메서드를 호출합니다.
    1. Layout Editor에서 버튼을 선택하려면 클릭합니다.
    2. Attributes 창에서 onClick 속성을 찾고 드롭다운 목록에서 sendMessage [MainActivity]를 선택합니다.

이제 버튼이 눌릴 때 시스템이 sendMessage() 메서드를 호출합니다.

이 메서드의 내용을 메모해 두세요. 이 내용은 시스템이 이 메서드가 android:onClick 속성과 호환되는 것으로 인식하기 위해 필요합니다. 구체적으로 이 메서드는 다음을 선언해야 합니다.

이어서 텍스트 필드의 내용을 읽고 해당 텍스트를 다른 activity로 전달하도록 이 메서드에 입력합니다.

Intent 빌드

Intent는 별도의 구성요소(예: 두 개의 activity) 간에 런타임 바인딩을 제공하는 객체입니다. Intent는 앱의 "작업 의도"를 나타냅니다. 다양한 작업에 intent를 사용할 수 있지만 이 과정에서는 intent를 사용하여 다른 activity를 시작해 보겠습니다.

MainActivity.java에서 아래에 나타낸 것처럼 EXTRA_MESSAGE 상수와 sendMessage() 코드를 추가합니다.

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 Studio에서 Cannot resolve symbol 오류가 다시 나타날 것이므로, Alt + Enter(또는 Mac의 경우 Option + Return)을 누릅니다. 가져오기는 다음과 같이 끝나야 합니다.

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

여전히 해결되지 않은 DisplayMessageActivity에 대한 오류는 다음 섹션에서 해결할 수 있습니다.

다음은 sendMessage()에서 수행되는 작업입니다.

두 번째 activity 생성

  1. Project 창에서 app 폴더를 마우스 오른쪽 버튼으로 클릭하고 New > Activity > Empty Activity를 선택합니다.
  2. Configure Activity 창에서 Activity Name에 "DisplayMessageActivity"를 입력하고 Finish를 클릭합니다(다른 모든 속성은 기본값으로 그대로 둡니다).

Android Studio는 다음 세 가지 작업을 자동으로 수행합니다.

앱을 실행하고 첫 번째 activity에서 버튼을 누르면 두 번째 activity가 시작되지만 이 activity는 비어 있습니다. 두 번째 activity는 템플릿에서 제공하는 비어 있는 레이아웃을 사용하기 때문입니다.

텍스트 뷰 추가

그림 1. 레이아웃 상단에 가운데 정렬된 테스트 뷰

새 activity에는 빈 레이아웃 파일이 포함되므로, 이제 메시지가 나타날 텍스트 뷰를 추가할 것입니다.

  1. app > res > layout > activity_display_message.xml 파일을 엽니다.
  2. 툴바에서 Turn On Autoconnect 클릭합니다(그러면 그림 1과 같이 활성화될 것입니다).
  3. Pallete 창에서Text를 클릭한 다음, TextView를 레이아웃 상단 중앙 부근으로 드래그하여 나타나는 수직선에 스냅되도록 놓습니다. Autoconnect는 뷰를 가로 중앙에 배치하도록 왼쪽 및 오른쪽 제약 조건을 추가합니다.
  4. 그림 1과 같이 나타나도록, 텍스트 뷰 상단에서 레이아웃 상단까지 제약 조건을 하나 더 만듭니다.

선택 사항으로, Attributes 창에서 textAppearance를 확장하여 텍스트 스타일을 일부 조정하고 textSizetextColor와 같은 속성을 변경합니다.

메시지 표시

이제 두 번째 activity를 수정하여 첫 번째 activity가 전달한 메시지를 표시해 보겠습니다.

  1. DisplayMessageActivity.java에서 다음 코드를 onCreate() 메서드에 추가합니다.
    @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);
    }
  2. Alt + Enter(Mac의 경우, Option + Return)를 눌러 누락된 클래스를 가져옵니다. 가져오기는 다음과 같이 끝나야 합니다.
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.TextView;
    

위로 탐색 추가

앱에서 기본 시작 화면이 아닌 각 화면("홈" 화면이 아닌 모든 화면)에서는 사용자가 앱 바의 위로(Up) 버튼을 눌러 앱 계층의 논리적 부모 화면으로 돌아갈 수 있는 탐색 기능을 제공해야 합니다.

여러분이 해야 할 일은 AndroidManifest.xml 파일에서 어떤 activity가 논리적 부모인지를 선언하는 것입니다. 이렇게 하려면 app > manifests > AndroidManifest.xml에서 파일을 열고, <activity> 태그에서 DisplayMessageActivity를 찾아 다음으로 바꿉니다.

<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를 눌러 이 메시지가 두 번째 activity에 나타나는지 확인합니다.

그림 2. 두 activity의 스크린샷

이것으로 첫 번째 Android 앱을 빌드했습니다!

Android 앱 개발의 기본 사항에 대해 계속 배우려면 아래 링크를 따라 다음 과정으로 진행하세요.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)