«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
09-22 07:23
관리 메뉴

DevTzu

#안드로이드 개발 - Intent를 이용하여 다른 Activity호출 본문

study

#안드로이드 개발 - Intent를 이용하여 다른 Activity호출

DevTzu 2010. 2. 12. 16:25
반응형


Intent란?
인텐트는 안드로이드 구성요소중의 세가지(Activity, Service, Broadcast Receiver)를 활성화시키는 역할을 담당합니다. 이는 일단 메시지로 보면 편한데 앞으로 실행될 작업에 대한 작업 지시서와 같다고 생각하면 됩니다. Broadcast의 경우 이는 무슨일이 일어났다는 정보도 포함하고 있습니다.

Activity에 대해서는 startActivity() 나 startActivityForResult() 를 이용 다른 Activity 를 시작시키거나 현재의 Activity가 무언가 다른 일을 하게 합니다.

Service에 대해서는 startService() 를 이용 Intent가 넘겨지면서 서비스를 시작하거나 현재 실행되고있는 서비스에 다른 작업지시를 하게 됩니다. 또한 bindService()를 이용 부르고 있는 Activity와 불리워지는 Service사이에 연결을 하는 것도 가능케 합니다.

Broadcast에 대해서는 sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcast() 를 이용 다른 Broadcast receiver로 메시지를 보내게 됩니다.

각 경우 넘겨진 Intent에 대해 안드로이드 시스템은 적절한 Activity를 찾아 다음작업으로 넘어가는것을 도와주게 됩니다.

이과정에서 Intent란 보내어지고 받는 오브젝트를 지칭하는것이고, Intent filter란 다음 작업이 정확히 명시되지 않은 상태에서 보내진 Intent에 대해 안드로이드 시스템이 연결시키는 과정에서 어느 Activity/Service/Broadcast가 받을것인가를 찾는 Intent Resolution 작업시 참조하는 정보입니다.



※밑에 이미지는 현재까지 완성된 지하철 노선도 0.212 입니다.
   일단 이미지뷰로 보여주는것만 해놓은 상태인데, 앞으로 이미지 확대, 축소 및 
   좌우 상하 이동도 해볼생각인데.. 점점 어려워 지네요. 언제쯤 완성이 될까요..   






본격적으로 Intent에 대해 직접 실행해보며 알아가도록 하겟습니다.
필요한 파일은 4개로 프로젝트를 만들었을때 생성되는 소스파일, xml파일과
두번째 액티비티를 호출하기위해 액티비티 추가하고, xml파일도 생성해주셔야 합니다.
프로젝트에 액티비티 추가하는 방법은 따로 설명하지 않겠습니다.

IntentExampleMain.java
package my.IntentExampleMain;

import android.app.Activity;
import android.content.Intent;          //intent 사용을 위해 import
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class IntentExampleMain extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);          //main.xml 레이아웃 보여주는 역할
        
        Button launch = (Button)findViewById(R.id.btn_seoul);
        launch.setOnClickListener(new Button.OnClickListener(){   
         public void onClick(View v) {
         Intent intent = new Intent(IntentExampleMain.this, IntentExampleSub.class);   
         startActivity(intent);          //두번째 액티비티 실행
         }
        });
    }
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:textSize="8pt" 
    android:text="도시"
    />    
<Button
       android:id="@+id/btn_seoul"          //btn_seoul이름의 버튼 생성
android:layout_column="1"
android:layout_width="fill_parent"
android:layout_height="40dp" 
android:text="수도권" 
></Button>
</LinearLayout>


IntentExampleSub.java
package my.IntentExampleMain;

import android.app.Activity;
import android.os.Bundle;

public class IntentExampleSub extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.intentexamplesub);          //intentexamplesub.xml 레이아웃 보여주는역할
   // TODO Auto-generated method stub
}
}

intentexamplesub.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    
<ImageView
    android:layout_width="1251dip"
    android:layout_height="661dip"
    android:src="@drawable/seoulmetrosubway" />          //drawable-hdpi폴더의 이미지이름
    
</LinearLayout>


※위 소스 실행화면입니다.
   첫번째 액티비티에서 "수도권" 이라는 버튼을 누르면 두번째 액티비티가 실행되고 이미지를 보여주게 됩니다.






반응형
Comments