ݺߣ

ݺߣShare a Scribd company logo
교과목명
모바일 앱 프로그래밍
페이지
1/9
작성자
이상호
확인자
정광식 교수
승인자
정광식 교수
작성일
2020-07-17
제목
2020학년도 1학기 출석수업대체시험 실습과제
파일명
[방송통신대 컴퓨터과학과] 모바일 앱
프로그래밍_기말평가_20200621.hwp
- 1 -
2020학년도 1학기 과제물(기말추가시험 제출용)
❍ 교과목명 : 모바일 앱 프로그래밍
❍ 학 번 : 201934-363698
❍ 성 명 : 이상호
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
2/9
- 2 -
I. AlertDialog객체와 Builder 객체의 관계를 설명하시오. (20점)
Ÿ AlertDialog 객체는 사용자와 애플리케이션 사이의 기본적인 통신 수단으로서 protected로 인해 간접
적으로 내부 클래스인 Builder를 통해 생성된다. 즉 그림 1에서와 같이 AlertDialog 객체를 생성하기
위해서 Builder 객체를 생성한 후 해당 메서드 (setMessage, setTitle, setIcon 등) 호출하여 AlertDialog
의 설정을 초기화해야 한다. 또한 Build에서 create 그리고 AlertDialog에서 show 메서드를 통해 제어
할 수 있다.
Ÿ 각 AlertDialog 및 Builder 객체에 대한 세부 정보는 다음과 같다.
Ÿ AlertDialog 객체
- 문자열 메시지 또는 제목이나 아이콘도 출력할 수 있으며 버튼을 통해 사용자의 입력을 받을 수
있다.
- 해당 객체를 생성하기 위해서 우선 AlertDialog.Builder 객체를 생성하고 이 객체의 메소드들을 호
출해서 객체 생성 전에 필요한 속성을 지정한다.
Ÿ Builder 객체
- 메시지, 아이콘 및 각종 버튼 등의 속성 정보들이 다양해서 생성자를 통해서 하나씩 모두 지정하
기 번거로우므로 별도의 Builder 객체의 메소드를 이용하여 정의한다.
- 이러한 Builder 객체는 우선 생성한 후 필요한 메소드를 호출할 수 있어 생성자보다 편리하다.
Ÿ 함수 설명
- AlertDialog.Builder(Context context) : Builder 객체를 생성, 이 과정에서 인자인 콘텍스트를 보내고
AlertDialog를 생성하는 액티비티를 전달
- AlertDialog.Builder setMessage (CharSequence message) : AlertDialog의 메시지를 지정 가능
- AlertDialog.Builder setTitle (CharSequence title) : AlertDialog의 문자열을 지정 가능
- AlertDialog.Builder setIcon (int iconld) : AlertDialog의 아이콘을 지정 가능
- AlertDialog show() : AlertDialog를 생성하고 화면으로 출력하지 않음
- AlertDialog create() : 화면 출력
그림 1. AlertDialog와 Builder 객체의 흐름도.
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
3/9
- 3 -
II. 액티비티 호출과 Intent 객체의 관계에 대해서 설명하시오. (15점)
Ÿ 인텐트는 복수의 액티비티로 구성된 애플리케이션으로서 주요 컴포넌트 (브로드 캐스트 리시버, 서
비스, 컨텐츠 프로바이더 등)들이 수행할 작업에 대한 정보를 내포하며 작업 결과를 반환할 때 사
용된다. 즉 함수에서 인수나 반환 값의 역할처럼 입력을 받는 액티비티를 호출할 경우 사용자가 입
력한 정보가 무엇이지 반환해야 하는데 이러한 상황에서 인텐트가 사용된다.
Ÿ 일반적으로 액티비티를 호출하는 메서드는 startArtivity(intent intent)로서 인텐트 객체 하나 만을 인
수로 취하고 내부에 부가 정보 (호출 상태, 요청 작업)가 포함되어 있다. 따라서 액티비티를 호출하
기 앞서 요청 작업에 대한 정보가 인텐트 객체에 먼저 정의되어야 한다.
그림 2. 액티비티 호출과 Intent 객체의 흐름도.
Ÿ 각 인텐트 객체 및 액티비티 호출에 대한 세부 정보는 다음과 같다.
Ÿ 인텍트 객체
- 자주 사용되는 인텍트 생성자는 다음과 같다. 즉 우선 Intent(Context packageContext, class<?> cls)
생성자는 내부의 서브 액티비티를 호출할 때 주로 사용되며 액티비티 클래스를 구현하는 컨텍스
트와 호출될 액티비티의 클래스 정보가 인수로 전달된다. 이 과정에서 컨텍스트는 호출자의 정보
로서 주로 this이며 cls는 호출되는 액티비티의 클래스 정보를 의미한다.
- Intentintent =newIntent(MainActivity.this, SubActivity.class); startActivity(intent);에서 호출자는 메인 액
티비티 자신이고 SubActiviy를 호출하는 명령어이다. 이 경우 startActivity 메소드는 인텐트의 정보
를 참조하여 MainActivity를 부모로 하는 SubActivity를 호출한다.
- 명시적 인텐트의 경우 인텐트에 호출할 대상 컴포넌트가 분명히 명시되어 있는 것을 정의하고 같
은 응용 프로그램내의 서브 액티비티를 호출할 때 사용한다. 이때 권한만 있다면 외부 응용 프로
그램의 액티비티도 호출할 수 있다.
- 암시적 인텐트에서는 호출 대상이 분명히 정해지지 않은 인텐트를 암시적 인텐트 (implicitintent)라
고 하며 주로 외부 응용 프로그램의 컴포넌트를 호출할 때 사용한다.
- 안드로이드 시스템에는 인텐트의 정보를 참조하여 호출된 적절한 컴포넌트를 검색하는 알고리즘
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
4/9
- 4 -
이 작성되어 있으며, 안드로이드 시스템은 적절한 컴포넌트를 찾기 위해 설치된 모든 응용 프로그
램의 컴포넌트를 조사한다.
- 인텐트를 명확히 하기 위해 여러 가지 정보들(Action, Data, Type, Category, Component 등)이 포함
되어야 한다. 특히 해당 정보들을 생성자로 전달하여 초기화할 수 도 있고 객체를 생성한 후 메서
드로 변경하거나 조사할 수도 있다.
- 인텐트의 정보 명세에서 Action의 경우 프로그래머가 실행하고자 하는 동작을 의미하며 인텐트를
통한 수행 작업을 지정한다. 이 경우 BroadcastReceiver(BR) 컴포넌트는 발생 사건에 대한 정보를
알려준다. 또한 시스템이 미리 정의해 놓은 동작을 사용할 수도 있고 사용자가 임의의 동작을 정
의할 수도 있다. 그 밖에 Action의 종류가 다양하기 때문에 getAction 및 setAction 메서드를 통해
다양한 변수 타입을 정의한다.
- 인텐트의 정보 명세의 Data에서는 Action을 실행하는 데 필요한 상세 데이터를 제공한다. 대부분의
Action은 수행 작업에 필요한 정보를 Data로 지정한다. 예를 들면 ACTION_EDIT 액션에 대해서는
편집의 대상이 되는 파일을 지정해야 하고 ACTION_CALL의 경우 전화를 걸 대상을 지정해야 한
다.
- 이러한 Action의 목적이 되는 대상은 광범위하기 때문에 임의의 대상을 유일하게 가리킬 수 있는
URI (UniformResource Identifier) 타입으로 되어 있다. 이 URI는 웹 사이트 주소인 URL, 로컬 저장
장치의 파일 경로, 주소록의 레코드 하나까지도 유일하게 지정할 수 있는 범용적인 형식으로서
getData/setData 메소드를 통해 Data에 접근한다.
- 따라서 Action과 Data 속성은 다음과 같이 ~에 대한 ~동작으로 정의할 수 있으므로 대개의 경우는
이 두 정보만으로도 대상 컴포넌트를 찾을 수 있다.
- 정확하고 상세한 처리를 위해 추가적인 정보가 더 필요한 경우 (Action을 처리할 수 있는 적합한
컴포넌트가 둘 이상이거나 Data의 타입이 애매한 경우) Type, Category, Component, Extras 속성들도
가급적 상세하게 지정해야 한다.
표 1. 인텐트 객체에 대한 상세 정보 (액션, 대상, 설명).
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
5/9
- 5 -
Ÿ 액티비티 호출
- 안드로이드 응용 프로그램을 구성하는 주요 단위(컴포넌트)의 하나로서 4개의 주요 컴포넌트
(Activity, ContentProvider, BroadcastReceiver, Service)가 있다.
- 윈도우와 유사한 개념과 유사하나 하나의 화면을 관리하는 주체라고 이해하는 것이 좋다.
- 사용자와의 인터페이스를 구성하나 그 자체는 출력 기능이없으므로 직접적으로 보이지 않는다.
- 사용자에게 실제로 보이는 것은 View이며 액티비티는 반드시 내부에 View나 ViewGroup을 가져야
화면에 출력될 수 있다. 액티비티가 생성될 때마다 호출되는 setContentView 메소드가 액티비티 안
에 View를 배치한다.
- 실제 응용 프로그램에서는 한 화면에서 여러 개의 복잡한 동작을 수행할 수 없으므로 기능별로 작
업을 실행할 수 있는 여러 개의 액티비티가 필요하다.
- 여러 개의 액티비티 사이에서 통신할 수 있는 방법 (Intent)이 필요하다.
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
6/9
- 6 -
III. AdapterView와 Adapter 객체의 관계에 대해서 설명하시오. (15점)
Ÿ Adapter는 화면에 출력될 데이터를 관리하며 AdapterView는 Adapter가 전달한 데이터를 화면에 출
력한다 (그림 3 참조).
Ÿ 그에 따라 AdapterView 및 Adapter 객체에 대한 세부 정보는 다음과 같다.
Ÿ AdapterView 객체
- AdapterView는 여러 개의 자식 View를 통합하여 화면에 표시할 수 있다.
- LinearLayout, RelativeLayout과 같이 배치만 담당하는 레이아웃과는 달리 사용자와 상호 작용도 처
리할 수 있으며 항목의 선택이 가능하다.
- 표시할 항목(데이터)를 Adapter 객체로부터 전달받아 화면에 출력한다. 이때 항목의 개수는 제한이
없으며 실행 중에 항목이 바뀔 수 있고 표시할 수 있는 데이터의 원본도 다양하다.
Ÿ Adapter에서 ListView 객체
- 여러 개의 항목들을 수직으로 표시하는 위젯 (주소록, 상품 목록 등)으로서 수직 스크롤을 지원하
므로 항목의 개수에는 제한이 없다.
- 따라서 제한된 크기의 화면에 많은 자료 (문자열, 이미지 등)를 출력하기 어렵기 때문에 ListView
를 사용하여 화면을 위/아래로 스크롤할 수 있도록 출력한다.
- ListView가 출력하는 항목 (데이터)은 임의의 View이며 레이아웃을 사용하면 어떠한 형태로든 정
보를 표현할 수 있다. Adapter로부터 받은 항목들을 수직으로 펼쳐서 보여준다.
Ÿ Adapter 객체
- 배열을 원본으로 사용할 때는 아래와 같이 ArrayAdapter를 초기화한다.
- ArrayAdapter (Context context, int textViewResourceId, List<T> objects 또는 Context context, int
textViewResourceId, T[] objects)에서 1번째 인수의 경우 현재 콘텍스트인 액티비티(this)를 넘겨주고
- 2번째 인수 : 항목을 표기할 레이아웃의 형태(리소스 ID)를 결정한다. 그리고 3번째 인수 : Adapter
로 공급될 데이터의 원본인데 두 가지 타입에 대해 오버로딩되어 있다.
그림 3. AdapterView와 Adapter 객체의 흐름도.
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
7/9
- 7 -
Ÿ ListView 객체
- ListView는 직접 레이아웃을 정의할 수도 있으나 Adapter 객체에서 미리 정의된 레이아웃을 사용
할 수도 있다. 시스템이 미리 정의해 놓은 레이아웃이므로 android.R.layout 뒤에 ID만 지정하면 된
다.
- setAdapter 메소드 호출의 경우 Adapter 객체가 준비되었으면 ListView의 setAdapter 메소드를 호출
하여 Adapter 객체를 ListView와 연결한다.
- Adapter는 ListView에 출력할 데이터 원본을 가지고 있으며 이 데이터 원본을 출력할 View를 생성
하여 ListView에게 제공한다.
- 이러한 ListView는 Adapter가 제공한 데이터를 사용자에게 보여주며 터치 입력을 받아 항목 선택
및 스크롤을 처리한다.
표 2. ListView 레이아웃 정의.
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
8/9
- 8 -
IV. 콜백 메소드를 통한 이벤트 처리, 리스너 인터페이스를 통한 이벤트 처리, 액티비티를
통한 리스너의 구현, View를 통한 리스너의 구현의 차이에 대해서 논하시오. (20점)
Ÿ 콜백 메소드를 통한 이벤트 처리
- 콜백 메소드는 특정 이벤트가 발생했을 때 시스템에 의해 자동으로 호출되는 메소드로서 java 코
드를 작성해 놓으면 이벤트 발생시의 동작을 정의할 수 있다.
- 사용자와 상호 작용하는 주체가 View이므로 이벤트에 대한 콜백의 정의는 주로 View가 재정의하
여 제공한다.
- 사용자가 화면을 터치할 때 키를 누르거나 떼는 등의 이벤트가 발생하면 콜백 메소드가 호출되고
발생한 이벤트에 대한 정보가 인수로 전달된다.
- 또한 콜백 메소드를 재정의하면 특정 이벤트가 발생할 시점에 시스템에 의해 자동으로 호출되므
로 특정 이벤트의 발생 시점뿐만 아니라 상세한 정보까지 얻을 수 있다.
Ÿ 함수 설명
- boolean onTouchEvent (MotionEvent event) : 터치 스크린 모션 이벤트를 다루고 싶을 때 실행되는
메소드
- boolean onKeyDown (intkeyCode,KeyEvent event) : 키를 눌렀을 때 호출되는 메소드
- boolean onKeyUp (intkeyCode,KeyEvent event) : 키를 눌렀다 뗄 때 호출되는 메소드
Ÿ 리스너 인터페이스를 통한 이벤트 처리
- 리스너(Listener)는 특정 이벤트를 처리하는 인터페이스이며 이벤트 발생을 처리한다.
- 대응되는 이벤트를 받는 하나의 메소드가 선언되어 있으며 모두 View의 내부 인터페이스로 선언
되어 있다.
- 대표적인 리스너 인터페이스와 메소드는 다음과 같다.
- boolean onTouch (Viewv, MotionEvent event) : 이벤트 핸들러로서 터치 이벤트가 뷰에 보내졌을 때
호출되는 메소드
- boolean onKey (Viewv, intkeyCode, KeyEvent event) : 하드웨어 키 값이 뷰에 보내졌을 때 호출되는
메소드
- void onFocusChange (Viewv,boolean hasFocus) : 뷰의 포커스 상태가 변화되었을 때 호출되는 메소
드
- 이벤트를 처리하려면 리스너 인터페이스가 리스너의 추상 메소드인 이벤트 핸들러를 구현해야 한
다.
- 리스너 인터페이스를 구현한 다음에는 이벤트가 발생했을 때 이벤트 핸들러가 호출되도록 View에
리스너 인터페이스를 연결해야 한다.
- 즉 어떤 리스너 인터페이스가 어떤 이벤트를 처리한다는 것을 등록해야 한다.
- 등록 메소드는 리스너 인터페이스별로 따로 준비되어 있으며 set+리스너의 이름 형식을 따른다.
- 터치 이벤트 발생시 View에서 터치 이벤트가 발생하면 setOnTouchListener 메소드로 등록된 리스너
인터페이스의 onTouch 메소드(이벤트 핸들러)가 호출될 것이다.
- onTouch 메소드(이벤트 핸들러)로는 이벤트와 관련된 정보가 event 인수로 전달된다.
- 리스너 인터페이스는 여러 View에 의해 공유될 수 있으므로 어떤 객체에서 발생한 이벤트인지를
View 인수로 전달받는다.
- 콜백 메소드는 특정 클래스에 소속되므로 이벤트를 받는 객체가 정해져 있는데 비해 리스너 인터
페이스는 임의의 View에 대한 이벤트를 처리할 수 있으므로 반드시 View 객체를 전달받아야 한
다.
- 콜백 메소드는 상속을 받아야만 재정의할 수 있는데 비해 리스너는 인터페이스일 뿐이므로 임의
의 클래스가 구현하여 사용할 수 있다.
- 리스터 인터페이스가 요구하는 onTouch 메소드 (이벤트 핸들러)를 구현하기만 하면 이벤트 핸들러
로 등록할 수 있다.
제목
2020학년도 1학기 출석수업대체시험 실습과제
작성일
2020-07-17
페이지
9/9
- 9 -
- View를 상속받을 필요없이 View 객체에도 바로 붙일 수 있으며 Button이나 TextView같은 위젯에
서도 이벤트 처리가 가능하다.
- 그러나 리스너 인터페이스 구현을 위해 별도의 클래스를 하나 더 선언해야 한다.
- 모든 이벤트에 대해 클래스를 만든다면 소스 코드의 양도 많아지고 각 클래스마다 다른 명칭을 부
여해야 한다.
Ÿ 액티비티를 통한 리스너의 구현
- 리스너 인터페이스의 구현 클래스를 따로 선언해도 되나 기존에 존재하는 클래스에서 리스너의
구현이 가능하다.
- 앞서 TouchListener는 리스너를 구현하는 역할만 할뿐 그 외에는 아무런 기능도 가지지 않는다.
- 최소한 액티비티 하나는 존재하므로 액티비티가 리스너 인터페이스를 구현하는 것이 가능하다.
- 액티비티는 Activity를 이미 상속(extends)받으나 리스너 인터페이스는 개수에 상관없이 얼마든지
구현할 수 있다.
- 선언문에서 리스너 인터페이스를 상속받고 본체에 이벤트 핸들러를 구현하기만 하면 된다.
- 별도의 클래스를 추가로 선언하지 않고 액티비티가 리스너 인터페이스를 직접 구현한다.
- 액티비티가 인터페이스를 자체적으로 구현하므로 별도의 클래스를 선언할 필요가 없으며 액티비
티 객체가 이미 존재하므로 리스너 인터페이스를 생성할 필요도 없다.
- 그러나 리스너 인터페이스가 구현된 View는 액티비티에 강하게 종속되고 리스너 인터페이스가 구
현된 View를 다른 액티비티에 재사용할 경우 분리하여 다른 액티비티로 옮겨야 한다.
- View와 관련된 메소드가 View 자신에게 포함되어 있지 않고 부모가 구현을 해주기 때문에 독립성
이 떨어진다.
Ÿ View를 통한 리스너의 구현
- View를 생성하고 클래스 선언문이 있으므로 View 자신이 필요로 하는 리스너 인터페이스를 상속
받아 구현한다.
- 이벤트 처리를 위해 필요한 onTouch 메소드(이벤트 핸들러)를 이벤트가 발생한 View가 스스로 처
리하는 것이다.
- 이벤트를 처리하는 메소드를 내부에 포함하기 때문에 구조상 깔끔하고 View의 재사용에도 유리하
다.
- 액티비티의 부담도 줄어들고 코드의 가독성이 향상된다.

More Related Content

Similar to [방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본 (20)

구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
LGU+
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
병한 유
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week
EunGi Hong
Context
ContextContext
Context
Lee-Jong-Chan
안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread
DaeHee Jang
04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조
Wanbok Choi
아이폰 앱 패턴
아이폰 앱 패턴아이폰 앱 패턴
아이폰 앱 패턴
조 용구
10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항
Jihoon Kong
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
YoungSu Son
React native study
React native studyReact native study
React native study
jonghyun Park
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13
hungrok
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
uEngine Solutions
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
Rjs Ryu
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
YoungSu Son
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
Keesun Baik
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout) [NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
YoungSu Son
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
Hyosang Hong
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
Hyosang Hong
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
LGU+
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
병한 유
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week
EunGi Hong
안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread
DaeHee Jang
04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조
Wanbok Choi
아이폰 앱 패턴
아이폰 앱 패턴아이폰 앱 패턴
아이폰 앱 패턴
조 용구
10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항
Jihoon Kong
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
YoungSu Son
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13
hungrok
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
uEngine Solutions
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
Rjs Ryu
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
YoungSu Son
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
Keesun Baik
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout) [NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
YoungSu Son
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
Hyosang Hong
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
Hyosang Hong

More from Lee Sang-Ho (20)

20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf
20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf
20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf
Lee Sang-Ho
[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf
[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf
[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf
Lee Sang-Ho
[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf
[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf
[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
Lee Sang-Ho
20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf
20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf
20230105_[강릉원주대 대기환경과학과] 2015년 1학기 전선 지구환경융합과학 과제물.pdf
Lee Sang-Ho
[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf
[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf
[강릉원주대 대기환경과학과] 2015년 1학기 심교 식품과화학물질 과제물.pdf
Lee Sang-Ho
[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf
[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf
[강릉원주대 대기환경과학과] 2014년 겨울학기 일교 인간과환경 과제물.pdf
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 보안 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 인터넷과 정보사회 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 그래픽 커뮤니케이션 기말평가 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 일선 그래픽 커뮤니케이션 과제물 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 교양 컴퓨터의 이해 과제물 제출본
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 문제
Lee Sang-Ho
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
Lee Sang-Ho

[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본

  • 1. 교과목명 모바일 앱 프로그래밍 페이지 1/9 작성자 이상호 확인자 정광식 교수 승인자 정광식 교수 작성일 2020-07-17 제목 2020학년도 1학기 출석수업대체시험 실습과제 파일명 [방송통신대 컴퓨터과학과] 모바일 앱 프로그래밍_기말평가_20200621.hwp - 1 - 2020학년도 1학기 과제물(기말추가시험 제출용) ❍ 교과목명 : 모바일 앱 프로그래밍 ❍ 학 번 : 201934-363698 ❍ 성 명 : 이상호
  • 2. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 2/9 - 2 - I. AlertDialog객체와 Builder 객체의 관계를 설명하시오. (20점) Ÿ AlertDialog 객체는 사용자와 애플리케이션 사이의 기본적인 통신 수단으로서 protected로 인해 간접 적으로 내부 클래스인 Builder를 통해 생성된다. 즉 그림 1에서와 같이 AlertDialog 객체를 생성하기 위해서 Builder 객체를 생성한 후 해당 메서드 (setMessage, setTitle, setIcon 등) 호출하여 AlertDialog 의 설정을 초기화해야 한다. 또한 Build에서 create 그리고 AlertDialog에서 show 메서드를 통해 제어 할 수 있다. Ÿ 각 AlertDialog 및 Builder 객체에 대한 세부 정보는 다음과 같다. Ÿ AlertDialog 객체 - 문자열 메시지 또는 제목이나 아이콘도 출력할 수 있으며 버튼을 통해 사용자의 입력을 받을 수 있다. - 해당 객체를 생성하기 위해서 우선 AlertDialog.Builder 객체를 생성하고 이 객체의 메소드들을 호 출해서 객체 생성 전에 필요한 속성을 지정한다. Ÿ Builder 객체 - 메시지, 아이콘 및 각종 버튼 등의 속성 정보들이 다양해서 생성자를 통해서 하나씩 모두 지정하 기 번거로우므로 별도의 Builder 객체의 메소드를 이용하여 정의한다. - 이러한 Builder 객체는 우선 생성한 후 필요한 메소드를 호출할 수 있어 생성자보다 편리하다. Ÿ 함수 설명 - AlertDialog.Builder(Context context) : Builder 객체를 생성, 이 과정에서 인자인 콘텍스트를 보내고 AlertDialog를 생성하는 액티비티를 전달 - AlertDialog.Builder setMessage (CharSequence message) : AlertDialog의 메시지를 지정 가능 - AlertDialog.Builder setTitle (CharSequence title) : AlertDialog의 문자열을 지정 가능 - AlertDialog.Builder setIcon (int iconld) : AlertDialog의 아이콘을 지정 가능 - AlertDialog show() : AlertDialog를 생성하고 화면으로 출력하지 않음 - AlertDialog create() : 화면 출력 그림 1. AlertDialog와 Builder 객체의 흐름도.
  • 3. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 3/9 - 3 - II. 액티비티 호출과 Intent 객체의 관계에 대해서 설명하시오. (15점) Ÿ 인텐트는 복수의 액티비티로 구성된 애플리케이션으로서 주요 컴포넌트 (브로드 캐스트 리시버, 서 비스, 컨텐츠 프로바이더 등)들이 수행할 작업에 대한 정보를 내포하며 작업 결과를 반환할 때 사 용된다. 즉 함수에서 인수나 반환 값의 역할처럼 입력을 받는 액티비티를 호출할 경우 사용자가 입 력한 정보가 무엇이지 반환해야 하는데 이러한 상황에서 인텐트가 사용된다. Ÿ 일반적으로 액티비티를 호출하는 메서드는 startArtivity(intent intent)로서 인텐트 객체 하나 만을 인 수로 취하고 내부에 부가 정보 (호출 상태, 요청 작업)가 포함되어 있다. 따라서 액티비티를 호출하 기 앞서 요청 작업에 대한 정보가 인텐트 객체에 먼저 정의되어야 한다. 그림 2. 액티비티 호출과 Intent 객체의 흐름도. Ÿ 각 인텐트 객체 및 액티비티 호출에 대한 세부 정보는 다음과 같다. Ÿ 인텍트 객체 - 자주 사용되는 인텍트 생성자는 다음과 같다. 즉 우선 Intent(Context packageContext, class<?> cls) 생성자는 내부의 서브 액티비티를 호출할 때 주로 사용되며 액티비티 클래스를 구현하는 컨텍스 트와 호출될 액티비티의 클래스 정보가 인수로 전달된다. 이 과정에서 컨텍스트는 호출자의 정보 로서 주로 this이며 cls는 호출되는 액티비티의 클래스 정보를 의미한다. - Intentintent =newIntent(MainActivity.this, SubActivity.class); startActivity(intent);에서 호출자는 메인 액 티비티 자신이고 SubActiviy를 호출하는 명령어이다. 이 경우 startActivity 메소드는 인텐트의 정보 를 참조하여 MainActivity를 부모로 하는 SubActivity를 호출한다. - 명시적 인텐트의 경우 인텐트에 호출할 대상 컴포넌트가 분명히 명시되어 있는 것을 정의하고 같 은 응용 프로그램내의 서브 액티비티를 호출할 때 사용한다. 이때 권한만 있다면 외부 응용 프로 그램의 액티비티도 호출할 수 있다. - 암시적 인텐트에서는 호출 대상이 분명히 정해지지 않은 인텐트를 암시적 인텐트 (implicitintent)라 고 하며 주로 외부 응용 프로그램의 컴포넌트를 호출할 때 사용한다. - 안드로이드 시스템에는 인텐트의 정보를 참조하여 호출된 적절한 컴포넌트를 검색하는 알고리즘
  • 4. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 4/9 - 4 - 이 작성되어 있으며, 안드로이드 시스템은 적절한 컴포넌트를 찾기 위해 설치된 모든 응용 프로그 램의 컴포넌트를 조사한다. - 인텐트를 명확히 하기 위해 여러 가지 정보들(Action, Data, Type, Category, Component 등)이 포함 되어야 한다. 특히 해당 정보들을 생성자로 전달하여 초기화할 수 도 있고 객체를 생성한 후 메서 드로 변경하거나 조사할 수도 있다. - 인텐트의 정보 명세에서 Action의 경우 프로그래머가 실행하고자 하는 동작을 의미하며 인텐트를 통한 수행 작업을 지정한다. 이 경우 BroadcastReceiver(BR) 컴포넌트는 발생 사건에 대한 정보를 알려준다. 또한 시스템이 미리 정의해 놓은 동작을 사용할 수도 있고 사용자가 임의의 동작을 정 의할 수도 있다. 그 밖에 Action의 종류가 다양하기 때문에 getAction 및 setAction 메서드를 통해 다양한 변수 타입을 정의한다. - 인텐트의 정보 명세의 Data에서는 Action을 실행하는 데 필요한 상세 데이터를 제공한다. 대부분의 Action은 수행 작업에 필요한 정보를 Data로 지정한다. 예를 들면 ACTION_EDIT 액션에 대해서는 편집의 대상이 되는 파일을 지정해야 하고 ACTION_CALL의 경우 전화를 걸 대상을 지정해야 한 다. - 이러한 Action의 목적이 되는 대상은 광범위하기 때문에 임의의 대상을 유일하게 가리킬 수 있는 URI (UniformResource Identifier) 타입으로 되어 있다. 이 URI는 웹 사이트 주소인 URL, 로컬 저장 장치의 파일 경로, 주소록의 레코드 하나까지도 유일하게 지정할 수 있는 범용적인 형식으로서 getData/setData 메소드를 통해 Data에 접근한다. - 따라서 Action과 Data 속성은 다음과 같이 ~에 대한 ~동작으로 정의할 수 있으므로 대개의 경우는 이 두 정보만으로도 대상 컴포넌트를 찾을 수 있다. - 정확하고 상세한 처리를 위해 추가적인 정보가 더 필요한 경우 (Action을 처리할 수 있는 적합한 컴포넌트가 둘 이상이거나 Data의 타입이 애매한 경우) Type, Category, Component, Extras 속성들도 가급적 상세하게 지정해야 한다. 표 1. 인텐트 객체에 대한 상세 정보 (액션, 대상, 설명).
  • 5. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 5/9 - 5 - Ÿ 액티비티 호출 - 안드로이드 응용 프로그램을 구성하는 주요 단위(컴포넌트)의 하나로서 4개의 주요 컴포넌트 (Activity, ContentProvider, BroadcastReceiver, Service)가 있다. - 윈도우와 유사한 개념과 유사하나 하나의 화면을 관리하는 주체라고 이해하는 것이 좋다. - 사용자와의 인터페이스를 구성하나 그 자체는 출력 기능이없으므로 직접적으로 보이지 않는다. - 사용자에게 실제로 보이는 것은 View이며 액티비티는 반드시 내부에 View나 ViewGroup을 가져야 화면에 출력될 수 있다. 액티비티가 생성될 때마다 호출되는 setContentView 메소드가 액티비티 안 에 View를 배치한다. - 실제 응용 프로그램에서는 한 화면에서 여러 개의 복잡한 동작을 수행할 수 없으므로 기능별로 작 업을 실행할 수 있는 여러 개의 액티비티가 필요하다. - 여러 개의 액티비티 사이에서 통신할 수 있는 방법 (Intent)이 필요하다.
  • 6. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 6/9 - 6 - III. AdapterView와 Adapter 객체의 관계에 대해서 설명하시오. (15점) Ÿ Adapter는 화면에 출력될 데이터를 관리하며 AdapterView는 Adapter가 전달한 데이터를 화면에 출 력한다 (그림 3 참조). Ÿ 그에 따라 AdapterView 및 Adapter 객체에 대한 세부 정보는 다음과 같다. Ÿ AdapterView 객체 - AdapterView는 여러 개의 자식 View를 통합하여 화면에 표시할 수 있다. - LinearLayout, RelativeLayout과 같이 배치만 담당하는 레이아웃과는 달리 사용자와 상호 작용도 처 리할 수 있으며 항목의 선택이 가능하다. - 표시할 항목(데이터)를 Adapter 객체로부터 전달받아 화면에 출력한다. 이때 항목의 개수는 제한이 없으며 실행 중에 항목이 바뀔 수 있고 표시할 수 있는 데이터의 원본도 다양하다. Ÿ Adapter에서 ListView 객체 - 여러 개의 항목들을 수직으로 표시하는 위젯 (주소록, 상품 목록 등)으로서 수직 스크롤을 지원하 므로 항목의 개수에는 제한이 없다. - 따라서 제한된 크기의 화면에 많은 자료 (문자열, 이미지 등)를 출력하기 어렵기 때문에 ListView 를 사용하여 화면을 위/아래로 스크롤할 수 있도록 출력한다. - ListView가 출력하는 항목 (데이터)은 임의의 View이며 레이아웃을 사용하면 어떠한 형태로든 정 보를 표현할 수 있다. Adapter로부터 받은 항목들을 수직으로 펼쳐서 보여준다. Ÿ Adapter 객체 - 배열을 원본으로 사용할 때는 아래와 같이 ArrayAdapter를 초기화한다. - ArrayAdapter (Context context, int textViewResourceId, List<T> objects 또는 Context context, int textViewResourceId, T[] objects)에서 1번째 인수의 경우 현재 콘텍스트인 액티비티(this)를 넘겨주고 - 2번째 인수 : 항목을 표기할 레이아웃의 형태(리소스 ID)를 결정한다. 그리고 3번째 인수 : Adapter 로 공급될 데이터의 원본인데 두 가지 타입에 대해 오버로딩되어 있다. 그림 3. AdapterView와 Adapter 객체의 흐름도.
  • 7. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 7/9 - 7 - Ÿ ListView 객체 - ListView는 직접 레이아웃을 정의할 수도 있으나 Adapter 객체에서 미리 정의된 레이아웃을 사용 할 수도 있다. 시스템이 미리 정의해 놓은 레이아웃이므로 android.R.layout 뒤에 ID만 지정하면 된 다. - setAdapter 메소드 호출의 경우 Adapter 객체가 준비되었으면 ListView의 setAdapter 메소드를 호출 하여 Adapter 객체를 ListView와 연결한다. - Adapter는 ListView에 출력할 데이터 원본을 가지고 있으며 이 데이터 원본을 출력할 View를 생성 하여 ListView에게 제공한다. - 이러한 ListView는 Adapter가 제공한 데이터를 사용자에게 보여주며 터치 입력을 받아 항목 선택 및 스크롤을 처리한다. 표 2. ListView 레이아웃 정의.
  • 8. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 8/9 - 8 - IV. 콜백 메소드를 통한 이벤트 처리, 리스너 인터페이스를 통한 이벤트 처리, 액티비티를 통한 리스너의 구현, View를 통한 리스너의 구현의 차이에 대해서 논하시오. (20점) Ÿ 콜백 메소드를 통한 이벤트 처리 - 콜백 메소드는 특정 이벤트가 발생했을 때 시스템에 의해 자동으로 호출되는 메소드로서 java 코 드를 작성해 놓으면 이벤트 발생시의 동작을 정의할 수 있다. - 사용자와 상호 작용하는 주체가 View이므로 이벤트에 대한 콜백의 정의는 주로 View가 재정의하 여 제공한다. - 사용자가 화면을 터치할 때 키를 누르거나 떼는 등의 이벤트가 발생하면 콜백 메소드가 호출되고 발생한 이벤트에 대한 정보가 인수로 전달된다. - 또한 콜백 메소드를 재정의하면 특정 이벤트가 발생할 시점에 시스템에 의해 자동으로 호출되므 로 특정 이벤트의 발생 시점뿐만 아니라 상세한 정보까지 얻을 수 있다. Ÿ 함수 설명 - boolean onTouchEvent (MotionEvent event) : 터치 스크린 모션 이벤트를 다루고 싶을 때 실행되는 메소드 - boolean onKeyDown (intkeyCode,KeyEvent event) : 키를 눌렀을 때 호출되는 메소드 - boolean onKeyUp (intkeyCode,KeyEvent event) : 키를 눌렀다 뗄 때 호출되는 메소드 Ÿ 리스너 인터페이스를 통한 이벤트 처리 - 리스너(Listener)는 특정 이벤트를 처리하는 인터페이스이며 이벤트 발생을 처리한다. - 대응되는 이벤트를 받는 하나의 메소드가 선언되어 있으며 모두 View의 내부 인터페이스로 선언 되어 있다. - 대표적인 리스너 인터페이스와 메소드는 다음과 같다. - boolean onTouch (Viewv, MotionEvent event) : 이벤트 핸들러로서 터치 이벤트가 뷰에 보내졌을 때 호출되는 메소드 - boolean onKey (Viewv, intkeyCode, KeyEvent event) : 하드웨어 키 값이 뷰에 보내졌을 때 호출되는 메소드 - void onFocusChange (Viewv,boolean hasFocus) : 뷰의 포커스 상태가 변화되었을 때 호출되는 메소 드 - 이벤트를 처리하려면 리스너 인터페이스가 리스너의 추상 메소드인 이벤트 핸들러를 구현해야 한 다. - 리스너 인터페이스를 구현한 다음에는 이벤트가 발생했을 때 이벤트 핸들러가 호출되도록 View에 리스너 인터페이스를 연결해야 한다. - 즉 어떤 리스너 인터페이스가 어떤 이벤트를 처리한다는 것을 등록해야 한다. - 등록 메소드는 리스너 인터페이스별로 따로 준비되어 있으며 set+리스너의 이름 형식을 따른다. - 터치 이벤트 발생시 View에서 터치 이벤트가 발생하면 setOnTouchListener 메소드로 등록된 리스너 인터페이스의 onTouch 메소드(이벤트 핸들러)가 호출될 것이다. - onTouch 메소드(이벤트 핸들러)로는 이벤트와 관련된 정보가 event 인수로 전달된다. - 리스너 인터페이스는 여러 View에 의해 공유될 수 있으므로 어떤 객체에서 발생한 이벤트인지를 View 인수로 전달받는다. - 콜백 메소드는 특정 클래스에 소속되므로 이벤트를 받는 객체가 정해져 있는데 비해 리스너 인터 페이스는 임의의 View에 대한 이벤트를 처리할 수 있으므로 반드시 View 객체를 전달받아야 한 다. - 콜백 메소드는 상속을 받아야만 재정의할 수 있는데 비해 리스너는 인터페이스일 뿐이므로 임의 의 클래스가 구현하여 사용할 수 있다. - 리스터 인터페이스가 요구하는 onTouch 메소드 (이벤트 핸들러)를 구현하기만 하면 이벤트 핸들러 로 등록할 수 있다.
  • 9. 제목 2020학년도 1학기 출석수업대체시험 실습과제 작성일 2020-07-17 페이지 9/9 - 9 - - View를 상속받을 필요없이 View 객체에도 바로 붙일 수 있으며 Button이나 TextView같은 위젯에 서도 이벤트 처리가 가능하다. - 그러나 리스너 인터페이스 구현을 위해 별도의 클래스를 하나 더 선언해야 한다. - 모든 이벤트에 대해 클래스를 만든다면 소스 코드의 양도 많아지고 각 클래스마다 다른 명칭을 부 여해야 한다. Ÿ 액티비티를 통한 리스너의 구현 - 리스너 인터페이스의 구현 클래스를 따로 선언해도 되나 기존에 존재하는 클래스에서 리스너의 구현이 가능하다. - 앞서 TouchListener는 리스너를 구현하는 역할만 할뿐 그 외에는 아무런 기능도 가지지 않는다. - 최소한 액티비티 하나는 존재하므로 액티비티가 리스너 인터페이스를 구현하는 것이 가능하다. - 액티비티는 Activity를 이미 상속(extends)받으나 리스너 인터페이스는 개수에 상관없이 얼마든지 구현할 수 있다. - 선언문에서 리스너 인터페이스를 상속받고 본체에 이벤트 핸들러를 구현하기만 하면 된다. - 별도의 클래스를 추가로 선언하지 않고 액티비티가 리스너 인터페이스를 직접 구현한다. - 액티비티가 인터페이스를 자체적으로 구현하므로 별도의 클래스를 선언할 필요가 없으며 액티비 티 객체가 이미 존재하므로 리스너 인터페이스를 생성할 필요도 없다. - 그러나 리스너 인터페이스가 구현된 View는 액티비티에 강하게 종속되고 리스너 인터페이스가 구 현된 View를 다른 액티비티에 재사용할 경우 분리하여 다른 액티비티로 옮겨야 한다. - View와 관련된 메소드가 View 자신에게 포함되어 있지 않고 부모가 구현을 해주기 때문에 독립성 이 떨어진다. Ÿ View를 통한 리스너의 구현 - View를 생성하고 클래스 선언문이 있으므로 View 자신이 필요로 하는 리스너 인터페이스를 상속 받아 구현한다. - 이벤트 처리를 위해 필요한 onTouch 메소드(이벤트 핸들러)를 이벤트가 발생한 View가 스스로 처 리하는 것이다. - 이벤트를 처리하는 메소드를 내부에 포함하기 때문에 구조상 깔끔하고 View의 재사용에도 유리하 다. - 액티비티의 부담도 줄어들고 코드의 가독성이 향상된다.