일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- node.js
- Row
- Image.network
- Scaffold
- Flutter 예제
- Row Widget
- Cached Image
- navigator
- flutter
- listview
- Flutter 앱 배포
- AppBar
- ListTile
- Flutter 강좌
- Load Image
- Hello World
- 반석천
- ListView.builder
- sqlite
- Column Widget
- CrossAxisAlignment
- MainAxisAlignment
- WillPopScope
- Flutter Tutorial
- Snackbar
- Flutter Example
- InkWell
- Networking
- HTTP
- FutureBuilder
- Today
- Total
꿈꾸는 시스템 디자이너
명시적 인텐트를 통한 Activity 실행 본문
1. 메니패스트파일에 호출할 Activity 등록
<!--
android:theme="@style/Theme.Transparent"
android:theme="@android:style/Theme.Light"
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.example"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".ExplicitIntent" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ForwardTarget" />
</application>
</manifest>
메인 엑티비티는 .ExplicitIntent로 자동 등록되어 있는 것을 확인할 수 있다. 이는 메인 activity 클래스가 ExplicitIntent.class파일임을 의미한다.
호출할 엑티비티(ForwardTarget.class 파일)을 메니페시트 파일에 추가한다.
Java 코드 상에서 올바르게 Intent를 생성하여 호출한다고 하더라도, 호출되는 activity를 메니페시트에 추가하지 않으면 실행되지 않음에 주의한다.
2. 호출자 activity 구현
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ExplicitIntent extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// setTheme(android.R.style.Theme_Light);
// setTheme(R.style.Theme_Transparent);
setContentView(R.layout.main);
Button goButton = (Button)findViewById(R.id.go);
goButton.setOnClickListener(mGoListener);
}
private final OnClickListener mGoListener = new OnClickListener()
{
public void onClick(View v){
Intent intent = new Intent();
intent.setClass(ExplicitIntent.this, ForwardTarget.class);
try {
startActivity(intent);
} catch(ActivityNotFoundException e ) {
Log.w("ExplicitIntent", "ForwardTarget.class를 발견할 수 없습니다.");
}
// 스택에서 제거하고자 한다면 아래 finish() 메서드를 호출한다.
finish();
}
};
}
버튼을 클릭하면 인텐트를 생성하여 피호출 activity에게 전달하는 구조이다.
3. 피호출 activity 구현
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class ForwardTarget extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.forward_target);
Intent intent = getIntent();
Toast.makeText(this, intent.toString(), 0).show();
}
}
피호출 activity는 호출 activity에 인텐트 수신을 통해 실행되지만, 추가로 getIntent()를 통해 호출 activity가 보낸 인텐트을 받을 수도 있다.
'Development > Android' 카테고리의 다른 글
안드로이드 메니페스트 퍼미션(Android Menifest Permission) 레퍼런스 (0) | 2012.04.09 |
---|---|
Intent 생성에 필요한 Actions, Categories, Extra Data 참조 정보 (0) | 2012.04.05 |
TabActivity 구성 방법(xml 레이아웃 파일 이용) (0) | 2012.04.04 |
TabActivity 구성 방법(동적 방법) (0) | 2012.04.04 |
레이아웃 인플레이션(Layout Inflation) (0) | 2012.04.04 |