반응형
Application Class
- 앱에 단 하나만 지정해 사용할 수 있는 객체
- 같은 안드 앱이라면 어디서든 주소값을 가져올 수 있음 -> 다양한 요소에서(화면에서) 공통적으로 사용하는 데이터를 관리 (데이터를 전달~전달~전달 하는 번거로움 해소)
- 영구적 저장은 X
- Application을 상속받아 클래스를 만들고, Manifest에 등록해 사용
class AppClass : Application() {
var value1 = 0
var value2 = ""
fun method1() {
Log.d("test", "method1을 호출하겠습니다.")
}
}
class MainActivity : AppCompatActivity() {
private lateinit var binding:ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
setContentView(view)
binding.button.setOnClickListener {
val app = application as AppClass// application 객체 얻어옴
app.method1()
app.value1 = 100
app.value2 = "hello"
val intent = Intent(this, SecondActivity::class.java)
//startActivityForResult(intent, 0) //구버전
activityResultLauncher.launch(intent)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
val app = application as AppClass// application 객체 얻어옴
binding.textView.text = "value1 : ${app.value1}\n"
binding.textView.append( "value2 : ${app.value2}")
}
//구버전
private val activityResultLauncher : ActivityResultLauncher<Intent> =
registerForActivityResult(ActivityResultContracts.StartActivityForResult())
{
val app = application as AppClass// application 객체 얻어옴
binding.textView.text = "value1 : ${app.value1}\n"
binding.textView.append( "value2 : ${app.value2}")
}
}
반응형
'Android' 카테고리의 다른 글
[안드로이드/데이터 관리] Raw 파일 읽어오기 (0) | 2023.04.29 |
---|---|
[안드로이드/데이터 관리] 파일 입출력 (4) | 2023.04.29 |
[안드로이드/데이터입출력] 코드를 이용해 View 객체 생성 (0) | 2023.04.29 |
[안드로이드/데이터입출력] XML을 이용해 View 객체 생성 (0) | 2023.04.29 |
[안드로이드/Error] ViewModelProvider.Factory 구현하라고 뜨는 오류 (0) | 2023.04.28 |