안드로이드 개발자의 창고
[43일차 Android] Application Class 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 Application Class
- 안드로이드 애플리케이션에 단 하나를 지정할 수 있는 객체
- 이 객체는 같은 안드로이드 애플리케이션이라면 어디서든 접근할 수 있다.
- 이를 통해 안드로이드의 다양한 구성요소에서 공통적으로 사용하는 데이터를 관리할 수 있다.
-
Application을 상속받는 클래스를 만들고 프로퍼티를 정의한다.
-
AndroidManfest.xml에 application 태그의 name 속성에 지정하여 사용한다.
예제 코드
AndroidManfest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:name=".AppClass"
...
</application>
</manifest>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textViewMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<Button
android:id="@+id/buttonMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SecondActivity 실행" />
</LinearLayout>
activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".SecondActivity">
<TextView
android:id="@+id/textViewSecond"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SecondActivity"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<Button
android:id="@+id/buttonSecond"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="이전으로" />
</LinearLayout>
AppClass.kt
import android.app.Application
class AppClass : Application(){
var value1 = 0
var value2 = 0.0
lateinit var value3:String
}
MainActivity.kt
class MainActivity : AppCompatActivity() {
lateinit var activityMainBinding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
activityMainBinding.run {
buttonMain.setOnClickListener {
val appClass = application as AppClass
appClass.value1 = 100
appClass.value2 = 11.11
appClass.value3 = "문자열1"
val secondIntent = Intent(this@MainActivity, SecondActivity::class.java)
startActivity(secondIntent)
}
}
setContentView(activityMainBinding.root)
}
}
- AppClass형의 appClass를 선언하여 프로퍼티의 값을 정의한다.
- 이후 SecondActivity를 실행한다.
SecondActivity.kt
class SecondActivity : AppCompatActivity() {
lateinit var activitySecondBinding: ActivitySecondBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activitySecondBinding = ActivitySecondBinding.inflate(layoutInflater)
activitySecondBinding.run {
val appClass = application as AppClass
textViewSecond.text = "${appClass.value1}\n"
textViewSecond.append("${appClass.value2}\n")
textViewSecond.append("${appClass.value3}")
}
setContentView(activitySecondBinding.root)
}
}
- AppClass형의 appClass의 프로퍼티 값을 사용하여 textView에 보여준다.
결과
'Computer > Android' 카테고리의 다른 글
[44일차 Android] Raw (0) | 2023.07.10 |
---|---|
[43일차 Android] 파일 입출력 (0) | 2023.07.10 |
[42일차 Android] Code를 이용한 View 생성 (0) | 2023.07.06 |
[42일차 Android] XML을 이용한 View 객체 생성 (0) | 2023.07.06 |
[42일차 Android] DrawerLayout (0) | 2023.07.06 |