안드로이드

[Android] Anko alert, startActivity에 대해 알아보자

코딩하는후운 2022. 10. 27. 10:20
반응형

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, Anko Commons, StartActivity] Anko Commons 를 사용한 StartActivity

Anko Commons 에 대한 두번 째 포스팅을 하겠습니다. 첫번 째 포스팅에서는 dialog 사용법에 대한 내용이였습니다. 이번에는 안드로이드 개발에 많이 사용하는 startActivity 를 Anko 를 사용하면 얼마나

black-jin0427.tistory.com

 

반응형