Anko alert , startActivity 사용법
-Anko는 JetBrain에서 직접 제작하여 배포한 코틀린 라이브러리 입니다.
Anko는 네 종류의 라이브러리를 나뉩니다.
1.Anko Commons
2.Anko Layouts
3.Anko SQLite
4.Anko Coroutines
기존 코틀린 다이얼로그는 아래와 같이 사용합니다.
val alertDialogBuilder = AlertDialog.Builder(acitivity)
alertDialogBuilder.setTitle("title")
alertDialogBuilder.setMessage("message").setCancelable(false)
.setPositiveButton("확인", Dialoginterface.OnClickListener({
dialog, which ->//확인시 수행할 함수
}))
.setNegativeButton("취소", Dialoginterface.OnClickListener{
dialog, which -> //취소시 수행할 함수
})
//다이얼로그 생성
val alertDialog = alertDialogBuilder.create()
//다이얼로그 보여주기
alertDialog.show()
참고로 DialogInterface.OnClickListener함수는 아래와 같습니다.
interface OnClickListener{
void onClick(DialogInterface dialog, int which);
}
변수 dialog는 클릭되어진 다이얼로그 자신을 나타내며
변수 which는 클릭 된 버튼의 값을 리턴하거나(positive에서는 -1, negative에서는 -2를 리턴합니다.)
리스트로 된 다이얼로그에서는 포지션을 리턴 합니다.
자 이제 Anko Commons를 사용해 다이얼로그를 만들어 보겠습니다.
0. app의 build.gradle에 다음과 같이 추가합니다.(ankoVersion = '0.10.2')
//anko Commons
implementation "org.jetbrains.anko:anko-commons:$ankoVersion"
implementation "org.jetbrains.anko:anko-appcompat-v7-commons:$ankoVersion"
implementation "org.jetbrains.anko:anko-support-v4-commons:$ankoVersion"
필요에 따라 v7commons또는 supportv4를 빌드스크립트 내 의존성에 추가하시면 됩니다.
예를들어 supportv4.Fragment에서 Anko를 사용하기 위해서는 supportv4를 추가해 주셔야 합니다.
그러면 아래와 같이 alert함수 하나만으로 다이얼로그를 만들 수 있습니다.
alert(title= "확인해주세요", message="팝업이 생성되었습니다."){
setPositiveButton("확인"){
//확인시 수행할 함수
}
setNegativeButton("취소"){
//취소시 수행할 함수
}
}.show()
============Activity 이동
보통 startActivity는 다음과 같이 사용합니다.
val intent = Intent(this@MainActivity, DetailActivity::class.java)
startActivity(intent)
이를 Anko Commons를 사용하면
startActivity<DetailActivity>()
위와 같이 한줄로 처리가 가능합니다.
만약 putExtra를 사용하여 데이터를 DetailActivity로 넘기는 경우에는
기존
val intent = Intent().apply{
putExtra("key_title", "title")
putExtra("key_name", "name")
}
startActivity(intent)
Anko Commons
startActivity<DetailActivity>(
"key_title" to "title",
"key_name" to "name")
참조 :
https://black-jin0427.tistory.com/77?category=727620
'안드로이드' 카테고리의 다른 글
[Android] 데이터 바인딩 BindingAdapter (0) | 2022.10.27 |
---|---|
[Android] Android Apk 패키징 v1, v2 (0) | 2022.10.27 |
[Android] Android DB Room에 대해 알아보자 (0) | 2022.10.25 |
[Android] 프로가드(Proguard)에 대해 알아 보자 (0) | 2022.10.25 |
파일다운로드 retrofit2 rxjava (0) | 2022.10.25 |