PDF문서chapter10_액티비티와 인텐트(5판)_박세준.pdf

닫기

background image

Chap10. 액티비티와 인텐트 


background image

Contents 

01 액티비티와 인텐트의 기본 

02 액티비티와 인텐트의 응용 


background image

01. 액티비티와 인텐트의 기본 

 안드로이드 4대 컴포넌트 

 액티비티(Activity) 

 서비스(Service) – 14장 

 브로드캐스트 리시버(Broadcast Receiver) – 14장 

 콘텐트 프로바이더(Content Provider) – 14장 


background image

01. 액티비티와 인텐트의 기본 

 액티비티 

 화면을 구성하는 가장 기본적인 컴포넌트(화면 하나하나) 

 안드로이드 4대 컴포넌트 중 가장 핵심적인 요소 

 MainActivity.java가 activity_main.xml이 필요할 경우 아래 호출 

 setContentView(R.layout.activity_main); 


background image

01. 액티비티와 인텐트의 기본 

 액티비티 추가 

 일반적으로 Activity 하나당 XML 파일 하나 생성 

 MainActivity.java 코드 

 Activity 클래스를 상속받음 → MainActivity.java를 Activity라고 부름 


background image

새로운 액티비티 추가하기(실습 10-1) 

1. 안드로이드 프로젝트 생성 

 [01] 프로젝트 이름(Project10_1) 

 패키지 이름(com.cookandroid.project10_1) 

 [실습 2-4]의 1~4(p.87~89) 


background image

새로운 액티비티 추가하기(실습 10-1) 

2. 화면 및 디자인 편집(activity_main.xml) 

 [02] [activity_main.xml] 코딩(p.393 예제 10-1) 


background image

새로운 액티비티 추가하기(실습 10-1) 

2. 화면 및 디자인 편집(second.xml) 

 [03] 새로운 액티비티([second.xml]) 파일 생성 

 [App] → [res] → [layout : 오른쪽 버튼 클릭] 

 [New] → [Layout resource file] 

 [New Resource File] → [File name] → “second.xml” → <OK> 


background image

새로운 액티비티 추가하기(실습 10-1) 

2. 화면 및 디자인 편집(second.xml) 

 [04] [second.xml] 코딩(p.393 예제 10-2) 


background image

새로운 액티비티 추가하기(실습 10-1) 

3. Java 코드 작성 및 수정(SecondActivity.java) 

 [05] [SecondActivity.java] 파일 생성 

 [App] → [java] → [com.cookandroid.ex10 : 오른쪽 버튼 클릭] 

 [New] → [Java Class] 

 [Create New Class] → [Name] → “SecondActivity” → <OK> 

10 


background image

새로운 액티비티 추가하기(실습 10-1) 

3. Java 코드 작성 및 수정(SecondActivity.java) 

 [06] [SecondActivity.java] 수정(p.394 예제 10-3) 

11 


background image

새로운 액티비티 추가하기(실습 10-1) 

3. Java 코드 작성 및 수정(SecondActivity.java) 

 [07] [SecondActivity.java] (p.395 예제 10-4) 

 <돌아가기> 버튼 클릭 이벤트 코딩 

 SecondActivity 종료 → MainActivity 호출 

 

12 

현재 액티비티 종료 


background image

새로운 액티비티 추가하기(실습 10-1) 

3. Java 코드 작성 및 수정(MainActivity.java) 

 [08] [MainActivity]→[SecondActivity] 호출(p.395 예제 10-5) 

13 


background image

새로운 액티비티 추가하기(실습 10-1) 

4. 프로젝트 실행 및 결과 확인 

 [09] 완성된 프로젝트를 실행(오류 발생) 

 그냥 종료되거나 그림과 같은 오류 발생 

 안드로이드에서 사용될 액티비티 AndroidManifest.xml에 꼭 등록 

 메인 액티비티(MainActivity) 자동 등록 

 추가한 세컨드 액티비티 별도 등록 

14 


background image

새로운 액티비티 추가하기(실습 10-1) 

2. [반복] 화면 및 디자인 편집 

 [10] [AndroidManifest.xml] 수정(p.396 예제 10-6) 

 [SecondActivity] 등록 

15 


background image

새로운 액티비티 추가하기(실습 10-1) 

4. 프로젝트 실행 및 결과 확인 

 [11] 저장 및 실행 

 저장 - 메뉴 → [File] → [Save All] 클릭 

 실행 - 메뉴 → [Run] → [Run ‘app’] 클릭 

5. 안드로이드 애플리케이션 개발 완료

 

 [12] 결과 확인 및 초기화면으로 돌아감 

16 


background image

직접 풀어보기 10-1(p.397) 

 [실습 10-1]을 다음과 같이 수정하여라. 

17 


background image

실습문제 

 그림과 같이 작동하도록 작성하시오. 

18 


background image

01. 액티비티와 인텐트의 기본 

  인텐트(Intent) 

 4대 컴포넌트가 서로 데이터를 주고 받기 위한 메시지 객체 

 Activity, Service, Broadcast Receiver, Content Provider 

 명시적 인텐트와 암시적 인텐트 

19 


background image

01. 액티비티와 인텐트의 기본 

 명시적 인텐트와 데이터의 전달 

 다른 액티비티 이름을 명확히 지정할 때 사용하는 방법 

 사용자가 새로운 액티비티를 직접 생성하고 호출할 때 사용 

 

 SecondActivity.class로 정확히 지정 

 startActivity(intent)로 생성한 인텐트를 넘겨 SecondActivity 실행 

20 


background image

01. 액티비티와 인텐트의 기본 

 명시적 인텐트와 데이터의 전달 

 MainActivity(인텐트에 데이터를 실어서 넘김) 

 SecondActivity(받은 데이터 처리) 

21 

getStringExtra() 
getIntExtra() 
getBooleanExtra() 


background image

01. 액티비티와 인텐트의 기본 

 레이팅바 

22 


background image

01. 액티비티와 인텐트의 기본 

 레이팅바 xml 코드(p.398 예제 10-7) 

23 


background image

01. 액티비티와 인텐트의 기본 

 레이팅바 Java 코드(p.399 예제 10-8) 

24 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

1. 안드로이드 프로젝트 생성 

 [01] 프로젝트 이름(Project10_2) 

 패키지 이름(com.cookandroid.project10_2) 

 [실습 2-4]의 1~4(p.87~89) 

25 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

2. 화면 및 디자인 편집(activity_main.xml) 

 [03] 화면 구성(적당한 명화 이미지 9개(/res/drawable) 복사) 

 바깥 리니어레이아웃 

 LinearLayout(3개) , Button(btnResult) , layout_weight(3:3:3:1) 

 안쪽 리니어레이아웃(3) – 이미지뷰 삽입(iv1~iv9) 

 layout_weigh(1:1:1),  layout_margin(ex : 5dp) 

26 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

2. 화면 및 디자인 편집(activity_main.xml) 

 [03] 코드 작성(p.401 예제 10-9) 

27 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

2. 화면 및 디자인 편집(result.xml) 

 [04] [result.xml] 파일 생성 

 /res/layout 폴더에 result.xml 생성 

 바깥은 TableLayout으로 설정 - stretchColumns 속성(0) 

 <TableRow>를 그림의 숫자와 동일한 (9+1)개 

 각 TableRow 에  TextView(tv1~tv9), RatingBar(rbar1~rbar9)  

 마지막 TableRow 에 <돌아가기> - Button(btnReturn) 

28 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

2. 화면 및 디자인 편집(result.xml) 

 [04] – [result.xml] 파일 코딩(p.402 예제 10-10) 

29 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(ResultActivity.java) 

 [05] [ResultActivity.java] 파일 생성 및 코딩 

 액티비티의 필수 메소드 onCreate( ) 추가 후 코드 작성 

 메뉴 → [Code] → [Override Methods] → [android.app.Activity] 

30 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(ResultActivity.java) 

 [05] [ResultActivity.java] 파일 생성 및 코딩 

 AndroidManifest.xml에 등록 

 

31 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(MainActivity.java) 

 [06] [MainActivity.java] 코딩(p.403 예제 10-11) 

 그림 클릭할 때마다 투표수를 저장할 9개 배열 선언(0으로 초기화) 

 이미지뷰 위젯 저장할 9개 배열 선언 

 이미지뷰 위젯 id R.id.iv1 ~ R.id.iv9 저장할 배열 선언 

 그림 이름 저장할 9개 배열 선언 

32 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(MainActivity.java) 

 [06] [MainActivity.java] 코딩(p.403 예제 10-11) 

33 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(MainActivity.java) 

 [07] 이미지 클릭 이벤트 리스너 코딩(p.404 예제 10-12) 

 반복문 사용 – ImageView(9) 

 이미지 클릭 - 이미지 투표수 증가이미지를 클릭할 때마다  

 해당 이미지 이름과 누적된 투표수도 토스트 메시지로 보여줌 

34 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(MainActivity.java) 

 [07] 이미지 클릭 이벤트 리스너 코딩(p.404 예제 10-12) 

35 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(MainActivity.java) 

 [08] <투표 종료> 클릭 이벤트 리스너 코딩(p.404 예제 10-13) 

 인텐트 생성, 인텐트에 투표수 배열과 그림 이름 배열을 넣은 후 결과 

액티비티 호출 

36 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(ResultActivity.java) 

 [09] [ResultActivity.java] 코딩(p.405 예제 10-14) 

 메인 액티비티에서 보낸 인텐트 받고 

 넘겨받은 투표 결과 배열과 그림 이름 배열 저장 

37 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(ResultActivity.java) 

 [10] [ResultActivity.java] 나머지 코딩(p.406 예제 10-15) 

 result.xml의 TextView(9), RatingBar(9) 위젯 변수 배열 선언 

 TextView id, RatingBar id 저장한 배열 변수 선언 

 XML 파일의 TextView와 RatingBar 위젯 변수에 대입 

 TextView 위젯 변수에 넘겨받은 그림 이름 적용 

 RatingBar에 넘겨받은 투표 결과 적용 

 Button 클릭(서브 액티비티 종료 → 메인 액티비티로 돌아감) 

38 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

3. Java 코드 작성 및 수정(ResultActivity.java) 

 [10] [ResultActivity.java] 나머지 코딩(p.406 예제 10-15) 

39 


background image

명화 선호도 투표 앱 만들기(실습 10-2) 

4. 프로젝트 실행 및 결과 확인 

 [11] 저장 및 실행 

 저장 - 메뉴 → [File] → [Save All] 클릭 

 실행 - 메뉴 → [Run] → [Run ‘app’] 클릭 

5. 안드로이드 애플리케이션 개발 완료

 

 [12] 결과 확인 및 초기화면으로 돌아감 

40 


background image

직접 풀어보기 10-2(p.407) 

 [실습 10-2]의 투표 결과 화면에서 가장 많은 표를 받은 

그림과 그 이름을 화면에 보여준다. 

41 


background image

직접 풀어보기 10-2(p.407) 

 [실습 10-2] 추가 부분(result.xml) 

42 


background image

직접 풀어보기 10-2(p.407) 

 [실습 10-2] 추가 부분(ResultActivity.Java) 

43 


background image

02. 액티비티와 인텐트의 응용 

 양방향 액티비티와 데이터의 전달 

 MainActivity(SecondActivity 데이터 넘김) 

 SecondActivity(MainActivity  데이터를 돌려줌) 

 

44 


background image

02. 액티비티와 인텐트의 응용 

 양방향 데이터 전달 예제(예제 10-16~19 실행 결과) 

45 


background image

02. 액티비티와 인텐트의 응용 

 양방향 데이터 전달 xml 코드(p.409~410 예제 10-16,17) 

46 


background image

02. 액티비티와 인텐트의 응용 

 양방향 데이터 전달 Java 코드(p.410 예제 10-18) 

47 


background image

02. 액티비티와 인텐트의 응용 

 양방향 데이터 전달 Java 코드(p.411 예제 10-19) 

48 


background image

02. 액티비티와 인텐트의 응용 

 양방향 데이터 전달 [AndroidManifest.xml]에 추가 

49 


background image

직접 풀어보기 10-3(p.412) 

 직접 풀어보기 10-3(p.412) 

50 


background image

02. 액티비티와 인텐트의 응용 

 암시적 인텐트(Implicit Intent, 묵시적 인텐트) 

 안드로이드에서 제공하는 기존 응용프로그램 실행 

 전화번호 인텐트로 넘김 → 전화 걸기 응용프로그램 실행 

51 


background image

02. 액티비티와 인텐트의 응용 

 암시적 인텐트(Implicit Intent, 묵시적 인텐트) 

 911에 응급 전화를 거는 형식 

 

 전화 걸기를 하려면  

 AndroidManifest.xml의 <application 위에 다음과 같이 권한 추가 

52 


background image

02. 액티비티와 인텐트의 응용 

 암시적 인텐트 xml 코드(p.413 예제 10-20) 

53 


background image

02. 액티비티와 인텐트의 응용 

 암시적 인텐트 Java 코드(p.413~415 예제 10-21) 

54 


background image

02. 액티비티와 인텐트의 응용 

 암시적 인텐트 Java 코드(p.413~415 예제 10-21) 

55 


background image

02. 액티비티와 인텐트의 응용 

 암시적 인텐트 Java 코드(p.413~415 예제 10-21) 

56 


background image

과제10-2 연습문제6(p.425) 

 <실습 10-2>를 개선해서 결과화면이 뷰플리퍼로 1등부

터 1초마다 자동으로 나오도록 프로젝트를 작성하라. 

 힌트 : 6장 뷰플리퍼(p.257~259 참조) 

 

57