* 해당 글은 안드로이드 디벨로퍼의 공식 문서를 개인적으로 정리하는 용도입니다.
다른 활동 시작 | Android 개발자 | Android Developers
다른 활동 시작 이전 과정을 완료했다면 텍스트 필드와 Send 버튼이 있는 단일 화면으로 구성된 활동을 보여주는 앱이 있을 것입니다. 이 과정에서는 사용자가 Send 버튼을 탭할 때 메시지를 표시
developer.android.com
Intent 빌드
Intent는 개별 컴포넌트(예: 두개의 Activity) 간의 런타임 바인딩을 제공하는 객체입니다.
어떤 작업을 하려는 앱의 의도를 나타냅니다.
매우 다양한 작업에 사용이 가능합니다.
아래는 Intent를 활용하여 다른 Activity를 시작하는 예제입니다.
const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"
fun sendMessage(view: View) {
...
val messsage = ...
val intent = Intent(this, NextActivity::class.java).apply {
putExtra(EXTRA_MESSAGE, message)
}
startActivity(intent)
}
sendMessage()에서 이루어지는 작업은 다음과 같습니다.
- Intent 생성자는 Context와 Class를 사용합니다.
Activity 클래스는 Context의 서브 클래스이므로 Context 매개변수를 먼저 사용합니다.
Class 매개변수는 시스템이 Intent를 전송하는 앱 컴포넌트로, 이 경우에는 시작할 Activity가 됩니다. - putExtra() 메서드는 Intent에 값을 더합니다. Intent는 extras라 불리는 Key-Value 페어로 데이터를 옮길 수 있습니다.
다음 Activity에서 키를 사용하여 텍스트 값을 가져오므로, 키는 public constant입니다. 앱의 패키지 이름을 접두사로 사용해 키를 정의하는 것이 좋습니다. 그러면 다른 앱과 상호작용하는 경우 키가 고유하게 유지될 수 있습니다. - startActivity() 메서드는 Intent를 지정하는 NextActivity의 인스턴스를 시작합니다.
두 번째 Activity 만들기
마우스 우클릭 후, "New > Activity > Empty Activity"를 선택하여 간편하게 Activity 파일, 레이아웃 파일을 생성하고, 필수 <activity> 요소를 AndroidManifest.xml에 추가합니다.
메시지 표시
Intent를 통해 전달받은 데이터는 다음과 같이 Key를 통해 얻을 수 있습니다.
override fun onCreate(savedInstanceState: Bundle?) {
...
// Get the Intent that started this activity and extract the string
val message = intent.getStringExtra(EXTRA_MESSAGE)
}
상향 탐색 추가
기본(main) 진입점이 아닌 각 화면(홈 화면이 아닌 모든 화면)에서는 사용자를 앱 계층 구조 내의 논리적 상위 화면으로 안내(navigation)하는 탐색 기능을 제공해야 합니다. 아래는 상위 화면으로 안내하기 위해 앱 바에 Up 버튼을 추가합니다.
<activity android:name=".NextActivity"
android:parentActivityName=".MainActivity">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
'Android App > Basic & Document' 카테고리의 다른 글
[공식문서] 간단한 사용자 인터페이스 빌드 (0) | 2022.08.05 |
---|---|
[공식문서] Android 프로젝트 만들기 (0) | 2022.07.30 |
[공식문서] 첫 번째 앱 빌드하기 (0) | 2022.07.28 |