별의 공부 블로그 🧑🏻‍💻
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
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖