두번째 액티비티 만들기
-----------------------------
액티비티의 모든 서브클래스들은 반드시 onCreate() 메소드를 구현해야만 합니다. 이 메소드는 액티비티가 메세지를 가지고 있는 인텐트를 받는 지역입니다. 또한 onCreate() 메소드는 반드시 setContentView() 메소드를 통해 액티비티 레이아웃을 정의해야만 합니다. 이 메소드는 액티비티 컴포넌트의 초기값을 설정하는 지역입니다.
안드로이드 스튜디오를 사용하여 새로운 액티비티 만들기
Android Studio는 여러분이 프로젝트를 만들 때 onCreate() 메소드를 오버라이드 해 놓습니다.
1. Android Studio 에서 java 디렉토리의 'com.mycompany.myfirstapp' 패키지를 선택하시고 마우스 오른쪽 버튼을 클릭합니다. 이어서 New > Activity > Blank Activity 를 선택합니다.
2. Choose option 창에서 액티비티 세부사항을 채웁니다.
° Activity Name : DisplayMessageActivity
° Layout Name : activity_display_message
° Title : My Message
° Hierarchical Parent : com.mycompany.myfirstapp.MyActivity
° Package name : com.company.myfirstapp
Finish 버튼을 클릭합니다.
그림 1. Android Studio의 새로운 액티비티 생성 마법사
3. DisplayMessageActivity.java 파일을 엽니다.
이 클래스는 이미 onCreate() 메소드의 구현을 포함하고 있습니다. 여러분은 나중에 이 메소드의 구현은 업데이트 할 것입니다. 또한 이미ActionBar 를 핸들링 하는 onOptionsItemSelected() 메소드의 구현도 포함되어 있습니다. 우선 이 두 메소드는 그냥 두겠습니다.
4. onCreateOptionMenu() 메소드는 제거합니다. 이 앱에서는 이 메소드가 필요하지 않습니다.
여러분들이 Android Studio를 사용하여 개발한다면 지금 앱을 실행할 수 있습니다. Send 버튼을 클릭하여 두번째 액티비티를 시작합니다. 하지만 특별한 것이 없습니다. 템플릿에 의해 제공된 기본 "Hello world" 레이아웃을 사용하고 있기 때문입니다. 여러분은 곧 하나의 custom text view 를 보여주도록 업데이트 할 겁니다.
안드로이드 스튜디오 없이 액티비티 만들기
만약 여러분이 다른 IDE 를 사용하거나 command line tools 를 사용한다면 아래를 실행 합니다.
1. 프로젝트의 src/ 디렉토리에 DisplayMessageActivity.java 라는 파일을 생성합니다.
2. 파일에 아래 내용을 추가하세요.
public class DisplayMessageActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_display_message, container, false); return rootView; } } } |
Note: 만약 Android Studio 외에 다른 IDE 를 사용하신다면, setContentView() 메소드의 매개변수에 요구되어 있는activity_display_message 레이아웃을 포함하고 있지 않을 겁니다. 괜찮습니다. 왜냐하면 여러분은 나중이 이 레이아웃을 사용하지 않도록 업데이트 할 것이기 때문입니다.
3. strings.xml 파일에 아래처럼새로운 액티비티의 제목 텍스트를 추가합니다.
<resources> ... <string name="title_activity_display_message">My Message</string> </resources> |
4. AndroidManifest.xml 메니페스트 파일의 Application 요소 안에 DisplaymessageActivity 에 대한 <activity> 요소를 추가합니다.
<application ... > ... <activity android:name="com.mycompany.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.mycompany.myfirstapp.MyActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.mycompany.myfirstapp.MyActivity" /> </activity> </application> |
android:parentActivityName 속성에 앱의 논리적 상속구조안에서 액티비티 부모의 이름을 선언합니다. 시스템은 Android 4.1(API16) 버전 이상에서 Up navigation 같은 기본 navigation 행동을 구현하기위한 값을 사용합니다. 여러분은 Support Library 의 사용과 <meta-data>요소의 사용을 통해 Android Studio의 예전 버전에서도 같은 navigation 기법을 사용할 수 있습니다.
Note : 여러분의 안드로이드 SDK 는 Adding SDK Package 단계에서 이미 최신버전의 Android Support Library 를 포함하도록 되어 있습니다. 안드로이드 스튜디오의 탬플릿을 사용한다면 이미 자동으로 여러분의 프로젝트에 Support Library 가 추가되어 있습니다. 여러분이 프로젝트에 library 를 추가하고 조작할 필요가 있다면 개발자 사이트의 setting up the Support Library 가이드를 따라해 보시고 오시기 바랍니다.
만약 여러분이 Android Studio 외에 다른 IDE 를 사용하신다면 아직 앱이 컴파일하지 않는 것에 대해 걱정하지 마세요. 여러분은 곧 하나의 custom text view 를 보여주로록 액티비티를 업데이트 할 것입니다.
인텐트 받기(얻어오기)
--------------------------
모든 Activity 는 어떤 방식으로 전달되든 Intent 에 의해 발동됩니다. 여러분은 getIntent() 라는 메소드를 호출함으로서 액티비티를 시작했던 인텐트를 얻을 수 있습니다. 그리고 인텐트 안에 포함되어 있는 데이터를 되찾아 올 수 있습니다.
1. java/com.mycompany.myfirstapp 디렉토리의 DisplayMessageActivity.java 파일을 작성합니다.
2. onCreate() 메소드에서 아래 명령 줄을 제거합니다.
setContentView(R.layout.activity_display_message); |
3. 인텐트를 얻어오고 지역변수에 할당합니다.
Intent intent = getIntent(); |
4. 파일의 가장 위해 Intent 클래스를 임포트 합니다.
안드로이드 스튜디오에서는 Alt+Enter(Mac 에서는 option+return) 을 통해 자동으로 미스된 클래스들을 임포트 합니다.
5. getStringExtra() 메소드를 통해 MyActivity 로 부터 전달된 message 를 추출합니다.
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); |
메세지 디스플레이 하기
-----------------------------
1. onCreate() 메소드안에 TextView 객체를 생성합니다.
TextView textView = new TextView(this); |
2. text 의 사이즈를 설정하고 setText() 로 메세지를 설정합니다.
textView.setTextSize(40); textView.setText(message); |
3. 그리고 나서 TextView 를 setContentView() 메소드의 매개변수로 전달하여 액티비티 레이아웃의 root View 로서 추가합니다.
setContentView(textView); |
4. DisplayMessageActivity 의 onCreate() 를 완성하면 아래처럼 보입니다.
@Override public void onCreate(Bundle savedInstanceState) { } |
여러분은 지금 앱을 실행시킬 수 있습니다. 앱이 실행되면 Text field(EditText)에 메세지를 타이핑하고 Send 버튼을 클릭합니다. 그리고 나면 두번째 액티비티에 메세지가 나타납니다.
그림 2. Android 4.4 에서 실행한 두개의 액티비티 화면
이것으로 여러분은 첫번째 안드로이드 앱을 만들어 봤습니다.
다음 포스트에서 다음 내용을 배워보겠습니다.
'Android 개발자사이트 튜토리얼' 카테고리의 다른 글
Action Bar 만들기 (0) | 2015.03.27 |
---|---|
Action Bar(액션바) 추가하기 (0) | 2015.03.27 |
다른 액티비티 실행하기 1 (0) | 2015.03.27 |
간단한 UI(User Interface) 구축하기 2 (0) | 2015.03.27 |
간단한 UI(User Interface) 구축하기 1 (0) | 2015.03.27 |