10. 액티비티와 인텐트 제목
액티비티의 개념을 파악한다. 인텐트의 개념과 활용법을 익힌다. 액티비티 생명주기에 대해 알아본다.
01 액티비티와 인텐트 기본 02 액티비티와 인텐트 응용
1. 액티비티와 인텐트 기본 ▶안드로이드 4대 컴포넌트[1/2] 액티비티(Activity) : 화면을 구성하는 가장 기본적인 컴포넌트 서비스(Service) : 액티비티와 상관없이 백그라운드에서 동작하는 컴포넌트 브로드캐스트 리시버(Broadcast Receiver) : 문자 메시지 도착, 배터리 방전, SD카드 탈부착, 네트워크 환경 변화 등이 발생하면 방송 신호 보냄
1. 액티비티와 인텐트 기본 ▶안드로이드 4대 컴포넌트[2/2] 콘텐트 프로바이더(Content Provider) : 응용프로그램 사이에 데이터를 상호 공유하기 위한 컴포넌트 콘텐트 프로바이더의 정보를 제공하는 방법으로는 URI(Uniform Resource Identifier)가 있음
1. 액티비티와 인텐트 기본 ▶액티비티 개요[1/11] 액티비티 추가 일반적으로 액티비티 하나당 XML 파일 하나를 만들어서 사용 MainActivity.java 코드는 Activity 클래스를 상속받으므로 MainActivity.java 를 액티비티라고 부름
1. 액티비티와 인텐트 기본 ▶액티비티 개요[2/11] 안드로이드 프로젝트 생성 프로젝트 이름 : Project10_1 패키지 이름 : com.cookandroid.project10_1
1. 액티비티와 인텐트 기본 ▶액티비티 개요[3/11] 화면 디자인 및 편집 activity_main.xml에 클릭하면 다른 액티비티가 나오게 하는 버튼을 하나 만듦
1. 액티비티와 인텐트 기본 ▶액티비티 개요[4/11] 화면 디자인 및 편집 새로운 액티비티에서 사용할 second.xml을 만든 후 배경색을 바꾸고 <돌아가기> 버튼을 하나만 만듦
1. 액티비티와 인텐트 기본 ▶액티비티 개요[5/11] Java 코드 작성 및 수정 새로운 액티비티인 SecondActivity.java 파일을 만듦
1. 액티비티와 인텐트 기본 ▶액티비티 개요[6/11] Java 코드 작성 및 수정 액티비티의 필수 메소드인 onCreate( )를 추가한 후 자동완성시킴 second.xml을 화면에 보여주는 코드를 한 행 추가
1. 액티비티와 인텐트 기본 ▶액티비티 개요[7/11] Java 코드 작성 및 수정 second.xml의 <돌아가기>를 클릭하면 현재 액티비티를 끝내는 코드 추가 현재 액티비티를 종료 SecondActivity는 메인 액티비티에서 호출할 것이므로 SecondActivity를 종료하면 다시 메인 액티비티가 나타남
1. 액티비티와 인텐트 기본 ▶액티비티 개요[8/11] Java 코드 작성 및 수정 메인 액티비티에서 SecondActivity를 호출하는 코드를 추가
1. 액티비티와 인텐트 기본 ▶액티비티 개요[9/11] 프로젝트 실행 및 결과 확인 완성된 프로젝트를 실행하면 다음과 같은 오류가 발생 안드로이드에서는 사용될 액티비티를 AndroidManifest.xml에 꼭 등록해야 함 메인 액티비티(MainActivity)는 자동으로 등록되지만, 추가한 SecondActivity 는 별도로 등록해줘야 함
1. 액티비티와 인텐트 기본 ▶액티비티 개요[10/11] [반복]화면 디자인 및 편집 AndroidManifest.xml 파일을 열고 SecondActivity를 등록 아래 코드를 </application> 바로 윗 행에 코딩
1. 액티비티와 인텐트 기본 ▶액티비티 개요[11/11]
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[1/14] 인텐트(Intent) 안드로이드 4대 컴포넌트가 상호 간에 데이터를 주고 받기 위한 메시지 객체 명시적 인텐트와 암시적 인텐트로 구분
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[2/14] 명시적 인텐트와 데이터의 전달 명시적 인텐트 : 다른 액티비티의 이름을 명확히 지정할 때 사용하는 방법 메인 액티비디에서 인텐트에 데이터를 실어서 넘긴 후, 세컨드 액티비티에서 받은 데이터를 처리
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[3/14] 래이팅바 예제
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[4/14] 래이팅바 예제 Java 코드
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[5/14] 안드로이드 프로젝트 생성 프로젝트 이름 : Project10_2 패키지 이름 : com.cookandroid.project10_2 화면 디자인 및 편집 적당한 명화 이미지 9개를 /res/drawable-hdpi에 복사
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[6/14] 메인 액티비티에서 사용할 activity_main.xml 수정 바깥 리니어레이아웃 안에 리니어레이아웃 3개, 버튼 1개를 생성 layout_weight를 3:3:3:1로 함 3개의 레이아웃에는 각각 3개의 이미지 뷰를 넣고 layout_weigh는 1:1:1로 함 필요하면 이미지뷰에 적당한 layout_margin(ex : 5dp)을 줌 9개 이미지뷰의 id는 iv1~iv9, 버튼의 id는 btnResult로 함
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[7/14] 서브 액티비티에서 사용할 result.xml을 /res/layout 폴더에 생성 바깥은 테이블레이아웃으로 설정 stretchColumns 속성을 0으로 함 <TableRow>를 그림의 숫자와 동일한 (9+1)개로 하고, 각 테이블 로우에는 텍스트뷰 1개, 래이팅바 1개를 생성 마지막 테이블 로우에는 <돌아가기> 생성 텍스트뷰의 id는 tv1~tv9로, 래이팅바의 id는 rbar1~rbar9로, 버튼의 id는 btnReturn으로 함
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[8/14] Java 코드 작성 및 수정 새로운 액티비티인 ResultActivity.java 파일을 만듦 onCreate( ) 메소드를 추가한 후 setContentView(R.layout.result)를 추가 AndroidManifest.xml에 등록
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[9/14] onCreate() 내부에 필요한 변수 선언 그림을 클릭할 때마다 투표 수를 저장할 9개짜리 배열을 선언하고 0으로 초기화 이미지뷰 위젯을 저장할 9개짜리 배열을 선언 이미지뷰 위젯의 id인 R.id.iv1 ~ iv9 를 저장한 배열을 선언 그림의 이름을 저장한 9개짜리 배열을 선언
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[10/14] onCreate() 내에 이미지 클릭 시 동작할 내용 코딩 각 이미지뷰에 대해 클릭 이벤트 리스너 생성 이미지뷰가 9개이므로 반복문을 사용 이미지 클릭하면 각 이미지의 투표수가 증가하도록 설정 이미지 클릭할 때마다 해당 이미지 이름과 누적된 투표수도 토스트 메시지로 보여줌
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[11/14] onCreate() 내에 <투표 종료>에 대해서 클릭 이벤트 리스너 생성 인텐트를 생성, 인텐트에 투표수 배열과 그림 이름 배열을 넣은 후 결과 액티비티 호출
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[12/14] 서브 액티비티인 ResultActivity.java 파일의 onCreate( ) 메소드 안을 코딩 메인 액티비티에서 보낸 인텐트 받고, 넘겨 받은 투표 결과 배열과 그림 이름 배열 저장
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[13/14] 서브 액티비티 나머지 코딩 result.xml의 텍스트뷰 9개와 래이팅바 9개의 위젯 변수 배열을 선언 텍스트뷰 id를 저장한 배열 변수, 래이팅바의 id를 저장한 배열 변수를 선언 XML 파일의 텍스트뷰 및 래이팅바를 위젯 변수에 대입 텍스트뷰 위젯 변수에 넘겨받은 그림 이름 을 적용 래이팅바에는 넘겨받은 투표 결과를 적용 버튼을 클릭하면 서브 액티비티를 종료 즉, 메인 액티비티로 돌아간다.
1. 액티비티와 인텐트 기본 ▶명시적 인텐트[14/14]
2. 액티비티와 인텐트 응용 ▶양방향 액티비티[1/6] 양방향 액티비티와 데이터의 전달 메인 액티비티에서 세컨드 액티비티로 데이터를 넘긴 후에 다시 세컨드 액티비티에서 메인 액티비티로 데이터를 돌려주는 경우
2. 액티비티와 인텐트 응용 ▶양방향 액티비티[2/6] 양방향 데이터 전달 예제 메인 액티비티의 에디트텍스트의 두 수를 세컨드 액티비티에서 더한 후에 다시 메인 액티비티로 돌려줌
2. 액티비티와 인텐트 응용 ▶양방향 액티비티[3/6] 양방향 데이터 전달 예제
2. 액티비티와 인텐트 응용 ▶양방향 액티비티[4/6] 양방향 데이터 전달 예제 메인 액티비티 Java 코드
2. 액티비티와 인텐트 응용 ▶양방향 액티비티[5/6] 양방향 데이터 전달 예제 세컨드 액티비티 Java 코드
2. 액티비티와 인텐트 응용 ▶양방향 액티비티[6/6]
2. 액티비티와 인텐트 응용 ▶암시적 인텐트[1/5] 암시적 인텐트(Implicit Intent, 묵시적 인텐트) 약속된 액션(Action)을 지정하여 안드로이드에서 제공하는 기존 응용프로그램 을 실행하는 것 전화 거는 것을 예로 들면 전화번호를 인텐트로 넘긴 후에 전화 걸기 응용프로 그램이 실행되는 것과 같음
2. 액티비티와 인텐트 응용 ▶암시적 인텐트[2/5] 암시적 인텐트(Implicit Intent, 묵시적 인텐트) 911에 응급전화를 거는 형식 전화 걸기를 하려면 AndroidManifest.xml에 다음과 같이 권한을 추가해야 함
2. 액티비티와 인텐트 응용 ▶암시적 인텐트[3/5] 암시적 인텐트 예제
2. 액티비티와 인텐트 응용 ▶암시적 인텐트[4/5] 암시적 인텐트 예제 Java 코드(1/2)
2. 액티비티와 인텐트 응용 ▶암시적 인텐트[5/5] 암시적 인텐트 예제 Java 코드(2/2)
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[1/11] 액티비티의 생성부터 소멸까지의 주기를 뜻함 안드로이드 응용프로그램은 화면이 작아 동시에 여러 개의 액티비티(화면)가 나올 수 없음 앞에 나오는 화면 하나만 활성화된 상태이고 나머지는 모두 비활성화된 상태 로 남게 됨
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[2/11]
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[3/11]
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[4/11] 안드로이드 프로젝트 생성 프로젝트 이름 : Project10_3 패키지 이름 : com.cookandroid.project10_3
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[5/11] 메인 액티비티에서 사용할 activity_main.xml 수정 버튼 2개를 생성하고 id는 btnDial, btnFinish로 함
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[6/11] 메인 액티비티인 MainActivity.java를 간단히 코딩 <전화걸기>를 클릭하면 다른 액티비티인 전화걸기 화면나오게 설정 <끝내기>를 클릭하면 메인 액티 비티를 종료
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[7/11] 메인 액티비티에 액티비티 관련 메소드 자동완성
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[8/11] 프로젝트 실행 및 결과 확인 로그캣 화면이 보이지 않으면 Android Studio 아래쪽 탭 중에서 ‘Android’를 클릭 하고 ‘Device | logcat’ 탭을 선택
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[9/11] 프로젝트 실행 및 결과 확인 로그필터 등록
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[10/11] 프로젝트 실행 및 결과 확인 응용프로그램을 실행하여 로그캣을 확인 만약 로그캣에 내용이 보이지 않으면 실행 단계마다 왼쪽 ‘액티비티’ 필터를 클릭
2. 액티비티와 인텐트 응용 ▶액티비티 생명주기[11/11] 다음의 각 단계마다 로그캣 확인 <전화걸기>를 클릭해서 다른 액티비티가 나타난 후 돌아가기 버튼을 눌러서 메인 액티비티로 돌아간 후 <끝내기>를 눌러 메인 액티비티를 마친 후