Android 16

[모바일 프로그래밍] Listener를 이용한 두 프래그먼트 간의 통신

실습 목표 및 내용텍스트 전달 앱: Fragment A의 EditText에 텍스트를 입력하고 "OK" 버튼을 누르면 해당 텍스트가 Fragment B의 EditText(혹은 TextView)에 표시됩니다. 이 통신은 양방향으로 구현됩니다.카운터 앱: Fragment A의 "Inc." 버튼을 클릭할 때마다 Fragment B에 있는 "Count" 값이 1씩 증가합니다.1. 텍스트 전달 앱: Interface를 이용한 통신이 실습에서는 Interface(인터페이스)를 사용하여 프래그먼트와 액티비티 간의 통신을 구현데이터 흐름은 [Fragment A] → [Activity] → [Fragment B] 순서1. 송신 측 (Fragment A)리스너 인터페이스 정의: 데이터를 보내는 Fragment A 내부에 리..

MOBILE PROGRAMING 2025.11.17

[모바일 프로그래밍] 프래그먼트 간 통신 실습

실습 목표: Fragment A와 Fragment B 간에 데이터를 주고받는 앱 구현.통신 방식: 'Using Activity' (액티비티를 이용한 방식) 채택. 호스팅 액티비티가 두 프래그먼트 사이의 중개자 역할을 수행.UI 구성:하나의 MainActivity가 Fragment A와 Fragment B를 모두 포함.각 프래그먼트는 텍스트를 입력받는 공간(EditText)과 'OK' 버튼을 가짐.데이터 흐름 (Fragment A → Activity):Fragment A는 getActivity()를 사용해 호스팅 액티비티의 참조를 획득.'OK' 버튼 클릭 시, Fragment A는 획득한 액티비티 참조를 통해 액티비티에 구현된 특정 함수(예: onReceivedFromFragA)를 호출하며 데이터를 전달...

MOBILE PROGRAMING 2025.11.12

[모바일 프로그래밍] 암시적 Intent와 액티비티 생명 주기

1. 인텐트(Intent) 이해 - 인텐트는 안드로이드 컴포넌트 간의 통신 수단이며, 명시적 인텐트와 암시적 인텐트로 나뉨. 1. 명시적 인텐트 (Explicit Intent)정의: 실행할 컴포넌트(예: 액티비티)를 클래스 참조 정보(::class.java)로 명확하게 지정함.동작: 시스템은 인텐트의 클래스 정보 와 매니페스트에 등록된 액티비티의 이름(name=) 을 직접 비교하여 해당 컴포넌트를 실행함.예시 코드: SecondActivity를 직접 지정하여 실행.val mIntent: Intent = Intent(applicationContext, SecondActivity::class.java)startActivity(mIntent)매니페스트 등록 예시:2. 암시적 인텐트 (Implicit Inte..

MOBILE PROGRAMING 2025.11.03

[모바일 프로그래밍] Activity와 Intent(양방향)

1. 액티비티 간 양방향 데이터 전달 (Activity Result API)Activity Result API를 이용하여 액티비티 간 양방향 데이터 전달을 구현함.실행 흐름은 크게 Part 1 (SecondActivity 실행)과 Part 2 (데이터 회신)로 구성됨.Part 1: ActivityResultLauncher 실행 (MainActivity)1. ActivityResultLauncher 객체 생성 (호출 측)에서 registerForActivityResult()를 이용해 ActivityResultLauncher 객체를 생성하고 초기화.이때 실제 작업자인 Contract 객체와, 결과 수신 시 호출될 콜백(callback) 메소드를 등록.val requestLauncher: ActivityRes..

MOBILE PROGRAMING 2025.10.29

[모바일 프로그래밍] Activity와 Intent(단방향)

1. 안드로이드 앱의 주요 구성 요소: 액티비티 (Activity)액티비티는 안드로이드 앱에서 사용자가 상호작용하는 하나의 UI(사용자 인터페이스) 화면을 의미앱은 여러 개의 액티비티로 구성될 수 있음예를 들어, 이메일 앱은 '이메일 목록을 보여주는 액티비티', '새 이메일을 작성하는 액티비티', '선택한 이메일을 읽는 액티비티' 등으로 나뉠 수 있음2. 안드로이드 앱의 주요 구성 요소: 인텐트 (Intent)- 인텐트는 한 액티비티에서 다른 액티비티를 호출할 때 필요한 핵심 요소- 이는 액티비티 간에 데이터를 전달하는 '메신저' 역할을 수행주요 기능:다른 컴포넌트에게 특정 동작을 요청하거나 이벤트가 발생했음을 알림액티비티를 호출할 때, 호출 대상이 되는 액티비티를 명시대상 액티비티에게 데이터를 전달하는..

MOBILE PROGRAMING 2025.10.23

[모바일 프로그래밍] 토스트(Toast)와 대화 상자(AlertDialog)

1. 토스트 (Toast)- 토스트는 화면에 잠시 나타났다가 사라지는 간단한 메시지 토스트 생성Toast.makeText() 함수를 사용하여 토스트를 생성함.주요 makeText() 함수:open static fun makeText(context: Context!, text: CharSequence!, duration: Int): Toast! open static fun makeText(context: Context!, resld: Int, duration: Int): Toast! Duration (지속 시간): Toast.LENGTH_LONG: 긴 시간 동안 보임.Toast.LENGTH_SHORT: 짧은 시간 동안 보임.토스트를 화면에 표시하려면 반드시 toast.show()를 호출해야 함.토스트 기타..

MOBILE PROGRAMING 2025.10.20

[모바일 프로그래밍] 메뉴 (Option Menu & Context Menu)

옵션 메뉴 (Option Menu)옵션 메뉴는 액티비티의 주 메뉴로, 보통 앱 바(App Bar)에 표시XML을 이용한 생성 과정 메뉴 XML 파일 생성: - res/menu 폴더에 메뉴 항목을 정의하는 XML 파일을 생성- 각 메뉴 항목은 태그를 사용하며, id와 title 속성을 가짐override fun onCreateOptionsMenu(menu: Menu?): Boolean { super.onCreateOptionsMenu(menu) val menuInflater: MenuInflater = getMenuInflater() menuInflater.inflate(R.menu.menu_xml_file, menu) return true}onCreateOptionsM..

MOBILE PROGRAMING 2025.10.13

[모바일 프로그래밍] 테이블레이아웃과 그리드레이아웃

1. TableLayout: 표 형태 구조- TableLayout은 위젯을 표 형태의 행과 열로 배치하기 위해 사용구조: 안에 행을 의미하는 를 추가하고, 안에 위젯을 넣어 열을 구성함. 한 행에 들어간 위젯 수로 열의 개수가 결정주요 속성- 자체에 설정.android:stretchColumns: 특정 열의 폭을 늘려 남은 공간을 모두 채움.android:layout_span: 위젯이 지정된 수의 열을 합쳐서 표시되도록 함.android:layout_column: 위젯을 지정된 열(인덱스)에 표시함.- layout_span으로 버튼 '2'가 2개 열을 차지하고, layout_column으로 버튼 '4'가 인덱스 1 위치에 배치됨. ..

MOBILE PROGRAMING 2025.10.06

[모바일 프로그래밍] LinearLayout 안드로이드 레이아웃

1. 레이아웃(Layout)이란?- 레이아웃은 내부에 다양한 위젯(버튼, 텍스트뷰 등)을 담는 일종의 컨테이너- 안드로이드에는 여러 종류의 레이아웃이 있으며, 각기 다른 규칙에 따라 위젯을 배치리니어 레이아웃 (LinearLayout): 위젯을 수직 또는 수평으로 차례대로 배치렐러티브 레이아웃 (RelativeLayout): 다른 위젯이나 부모 레이아웃을 기준으로 상대적인 위치에 위젯을 배치테이블 레이아웃 (TableLayout): 격자무늬(표) 형태로 위젯을 배치그리드 레이아웃 (GridLayout): 테이블 레이아웃과 비슷하지만 행과 열을 확장하는 등 더 유연한 배치가 가능프레임 레이아웃 (FrameLayout): 위젯을 좌측 상단에 겹쳐서 배치하며, 특정 위젯만 선택적으로 보여줄 때 유용2. Lin..

MOBILE PROGRAMING 2025.09.29

[모바일 프로그래밍] 이미지뷰와 이미지버튼 실습

애완동물 사진 보기(이미지뷰와 이미지버튼)📂 activity_main.xml : 화면의 구조와 모양 정의- 이 파일은 앱의 화면이 어떻게 생겼는지를 정의하는 설계도- LinearLayout을 사용해 위젯(버튼, 텍스트 등)들을 세로로 차례대로 쌓는 구조초기 화면: 처음에는 "선택을 시작하시겠습니까?" 라는 TextView와 "시작함" CheckBox만 보임숨겨진 요소: 나머지 위젯들(TextView, RadioGroup, Button, ImageView)은 android:visibility="invisible" 속성 때문에 처음에는 화면에 보이지 않음 📂 MainActivity.kt : 앱의 실제 동작 로직 구..

MOBILE PROGRAMING 2025.09.29