스타의 도서관/안드로이드 개발

안드로이드 기초 강좌(Activity 전환하기) - 5/21

스타(star) 2013. 5. 22. 10:58

안녕하세요. 스타입니다.


어제 안드로이드 hellloworld 띄워 보았고요.


오늘은 Activity 전환에 대해서 알아보겠습니다.


안드로이드에서는 어플리케이션의 하나의 화면을 액티비티라고 말합니다. 


액티비티의 화면은 레이아웃 파일로 수정하고, 동작은 소스코드에서 이루어 집니다.


액티비티의 상태(state)는 활성, 일시정지, 정지 이렇게 나뉘어져있습니다.


- 활성 : 액티비티가 현재 화면에 띄워져 있는 상태이며 사용자와 상호 작용이 가능한 상태

- 일시정지 : 액티비티가 화면에 표시되고 있긴 하지만 사용자와 상호 작용이 못하는 상태

- 정지 : 홈화면으로 나가거나, 다른 액티비티에 가려서 화면에서 아예 보이지 않게 된 상태


매니페스트에서 메인과 서브를 설정해 줍니다. 파일 이름은 대소문자를 가리기 때문에 확인해 주세요.


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.exam"

    android:versionCode="1"

    android:versionName="1.0" >


    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="17" />


    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity android:name="MainActivity" android:label="@layout/activity_main">

            <intent-filter>

                <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>

            </intent-filter>

            

        </activity>

        <activity android:name="SubActivity" android:label="@layout/subactivity"></activity>

    </application>


</manifest>



메인쪽 레이아웃 소스 코드

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >


    <TextView

        android:id="@+id/textView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />


    <Button

        android:id="@+id/BtnCalltoSub"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignLeft="@+id/textView1"

        android:layout_below="@+id/textView1"

        android:text="CallSubActivity" />


</RelativeLayout>



메인에서 호출할 서브쪽 레이아웃 소스코드

subactivity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >


    <TextView

        android:id="@+id/textView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Sub activity" >

    </TextView>


    <Button

        android:id="@+id/BtnCalltoMain"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Call main Activity" />


</LinearLayout>


메인쪽 버튼과 화면 작동을 담당할 자바 코드

MainActivity.java

package com.exam;


import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;



public class MainActivity extends Activity  {

@Override

protected void onCreate(Bundle savedInstanceState) 

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button btnCallMain = (Button) findViewById(R.id.BtnCalltoSub);

btnCallMain.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v)

{

Log.i("onClick", "CallSubActivity");

Intent intentSubActivity = 

new Intent(MainActivity.this, SubActivity.class);

startActivity(intentSubActivity);

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}


}



서브쪽 버튼과 작동을 담당할 자바 코드
SubActivity.java
package com.exam;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class SubActivity extends Activity  
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.subactivity);
Button btnCallMain = (Button) findViewById(R.id.BtnCalltoMain);
btnCallMain.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("onClick", "CallMainActivity");
finish();
}

});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

수행결과는 다음과 같음.


버튼을 누르면 서브액티비티로 연결됩니다.


서로 전환 가능합니다.