728x90
728x170
1) 안드로이드 어플리케이션의 네 가지 구성요소
① 액티비티(Activity)
② 서비스(Service)
③ 브로드캐스트 수신자(Broadcast Receiver)
④ 내용 제공자(Content Provider)
2) 액티비티를 만들어 추가하고 서로 간에 상태 코드나 응답을 주고받는 방법
새로운 액티비티의 XML 레이아웃 정의 |
메인 레이아웃 XML 파일을 복사하고 수정하여 새로운 액티비티의 화면 구성을 XML 레이아웃으로 정의 |
새로운 액티비티 코드 작성 |
메인 액티비티 자바 코드를 복사하고 수정하여 새로운 액티비티 코드를 작성 |
메인 액티비티에 요청 코드 정의 |
새로운 액티비티를 띄울 때 사용할 요청 코드를 상수로 정의 |
새로운 액티비티 띄우기 |
버튼 등의 이벤트를 처리하여 startActivityForResult() 메소드로 새로운 액티비티를 띄우는 코드를 추가 |
새로운 액티비티에서 응답 보내기 |
새로운 액티비티에 들어 있는 버튼 등의 이벤트를 처리하여 setResult() 메소드로 응답을 보내는 코드를 추가 |
메인 액티비티에 응답 처리 코드 정의 |
onActivityResult() 메소드를 정의하여 응답을 처리 |
매니페스트 파일에 액티비티 정의 추가 |
새로운 액티비티를 매니페스트 파일에 추가 |
(참고)
java/.../MainActivity.java
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 |
package org.androidtown.intent.basic;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
/**
* 인텐트를 이용해 새로운 액티비티를 띄우고 다시 돌아오는 방법에 대해 알 수 있습니다.
*
* @author Mike
*/
public class MainActivity extends AppCompatActivity {
/**
* 요청 코드 정의
*/
public static final int REQUEST_CODE_ANOTHER = 1001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onButton1Clicked(View v) {
// 인텐트 객체를 만드는 방법 #1
// 인텐트 객체를 만듭니다.
Intent intent = new Intent(getBaseContext(), AnotherActivity.class);
// 액티비티를 띄워주도록 startActivityForResult() 메소드를 호출합니다.
startActivityForResult(intent, REQUEST_CODE_ANOTHER);
// 인텐트 객체를 만드는 방법 #2
//Intent intent = new Intent();
//ComponentName name = new ComponentName("org.androidtown.intent.basic", "org.androidtown.intent.basic.AnotherActivity");
//intent.setComponent(name);
//startActivityForResult(intent, REQUEST_CODE_ANOTHER);
}
/**
* 새로운 액티비티에서 돌아올 때 자동 호출되는 메소드
*/
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == REQUEST_CODE_ANOTHER) {
Toast toast = Toast.makeText(getBaseContext(), "onActivityResult() 메소드가 호출됨. 요청코드 : " + requestCode + ", 결과코드 : " + resultCode, Toast.LENGTH_LONG);
toast.show();
if (resultCode == RESULT_OK) {
String name = intent.getExtras().getString("name");
toast = Toast.makeText(getBaseContext(), "응답으로 전달된 name : " + name, Toast.LENGTH_LONG);
toast.show();
}
}
}
}
|
cs |
java/.../AnotherActivity.java
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
32
33
34
35
36
37
38
39
40
41 |
package org.androidtown.intent.basic;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 새로운 액티비티
*
* @author Mike
*/
public class AnotherActivity extends Activity {
Button backButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.another);
backButton = (Button) findViewById(R.id.backButton);
// 버튼을 눌렀을 때 메인 액티비티로 돌아갑니다.
backButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 객체를 만듭니다.
Intent resultIntent = new Intent();
resultIntent.putExtra("name", "mike");
// 응답을 전달하고 이 액티비티를 종료합니다.
setResult(RESULT_OK, resultIntent);
finish();
}
});
}
}
|
cs |
.../AndroidManifest.xml
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 |
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.androidtown.intent.basic">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AnotherActivity"
android:label="@string/title_another"
android:theme="@android:style/Theme.Dialog"
>
</activity>
</application>
</manifest>
|
cs |
728x90
그리드형(광고전용)
'Programming > Android' 카테고리의 다른 글
스크롤뷰 (0) | 2017.01.17 |
---|---|
테이블 레이아웃 (0) | 2017.01.17 |
상대 레이아웃 (0) | 2017.01.17 |
리니어 레이아웃 (0) | 2017.01.16 |
레이아웃 (0) | 2017.01.16 |
뷰와 뷰그룹 (0) | 2017.01.16 |
인텐트와 데이터 전달 (0) | 2017.01.08 |
[안드로이드] 안드로이드에서 제공하는 대표적인 레이아웃 (0) | 2016.12.20 |