반응형
본 글은 스파르타 코딩 클럽의 "안드로이드 앱개발 기초반" 강의를 듣고 작성한 개발일지입니다.
오늘은 성격 유형에 대한 앱을 가지고 공부해보겠습니다.
먼저 Toast 메시지에 대해 조금 자세히 살펴보겠습니다.
// MainActivity.kt
fun clickIstj(view: View) {
Toast.makeText(view.context, "진정한 데이터 사이언티스트", Toast.LENGTH_LONG).show()
}
view.context: 앱이 어떤 상태에 있는지를 토스트에게 알려주기 위해 전달하는 값
Toast.LENGTH_LONG: 토스트가 노출되는 시간 설정 <-> Toast.LENGTH_SHORT
이제 새로운 액티비티를 추가해보겠습니다. File -> New -> Activity -> Empty Activity 를 클릭하시면 새로운 액티비티를 생성할 수 있습니다.
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="진정한 데이터 사이언티스트"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
// MainActivity.kt
fun clickIstj(view: View) {
Toast.makeText(view.context, "진정한 데이터 사이언티스트", Toast.LENGTH_LONG).show()
var intent = Intent(this, lstjActivity::class.java)
startActivity(intent)
}
Intent: - 개별 앱 컴포넌트 간 런타임 바인딩을 제공하는 객체
- 다양한 작업에서 활용 가능하지만, 주로 다른 액티비티를 시작할 때 사용
this: 현재 코드가 적혀있는 곳을 의미
lstjActivity: 도착지 액티비티
::class.java: 참조를 위한 class 값을 의미
ex) 0 vs "0" <- 타입 차이 명시
액티비티를 시작할 때 데이터를 전달하는 작업을 시도해보겠습니다. 위에서 Intent 는 어떤 작업을 하겠다는 "의도"를 나타내는데요, 이때 내가 주고 싶은 정보도 담아서 전달할 수 있습니다.
// MainActivity.kt
fun clickIstj(view: View) {
// Toast.makeText(view.context, "진정한 데이터 사이언티스트", Toast.LENGTH_LONG).show()
var intent = Intent(this, lstjActivity::class.java)
intent.putExtra("PersonalKey", "ISTJ") // 추가
startActivity(intent)
}
putExtra(key, value): key - 다른 화면에서 데이터를 확인할 때 쓰는 값
value - 전달하려는 값
// lstjActivity.kt
var personalKey = intent.getStringExtra("PersonalKey")
Toast.makeText(this, personalKey, Toast.LENGTH_LONG).show()
getStringExtra(key): Intent에 담겨있는 데이터를 확인하는 방법
Toast.makeText(this): "어디서" 보여줘야 하는지를 표현
(참고)
- Intent와 Toast.makeText의 첫 번째 값은 "컨텍스트(context)"를 전달해줘야 함
- 컨텍스트는 현재 상태의 맥락을 의미
- this는 현재 액티비티의 컨텍스트를 사용하겠다는 의미, view.context는 뷰에 담겨 있는 컨텍스트를 사용하겠다는 의미
- 뷰에는 뷰를 생성할 때 사용된 컨텍스트가 들어있고, 일반적으로 뷰가 속해있는 액티비티의 컨텍스트가 들어가게 됨
전달받은 값을 토스트 메시지가 아닌 TextView 를 이용해 표시해보겠습니다.
class lstjActivity : AppCompatActivity() {
private lateinit var textView: TextView // 추가
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_lstj)
var personalKey = intent.getStringExtra("PersonalKey")
// Toast.makeText(this, personalKey, Toast.LENGTH_LONG).show()
textView = findViewById(R.id.textView) // 추가
textView.text = personalKey // 추가
}
}
토스트 메시지가 아닌 TextView 형태로 putExtra 로 전달한 "ISTJ"가 나오는 것을 확인할 수 있습니다. 참고로 숫자인 Int나 Boolean 값을 전달받을 때는 각각 getIntExtra, getBooleanExtra를 사용하면 됩니다.
다음 시간엔 모든 성격 유형 버튼에 동작을 구현해보겠습니다.
728x90
반응형
'문돌이 존버 > 앱 개발 스터디' 카테고리의 다른 글
코틀린(kotlin) - 웹 페이지를 보여주는 웹뷰(WebView) 다루기 (0) | 2021.07.11 |
---|---|
코틀린(kotlin) - 여러 버튼에 동일한 동작 구현하기 (0) | 2021.07.10 |
코틀린(kotlin) - 뷰 정보를 활용해 동작 구현하기 (0) | 2021.06.27 |
코틀린(Kotlin) 기초 문법 배우기 (2) (0) | 2021.06.27 |
코틀린(Kotlin) 기초 문법 배우기 (1) (0) | 2021.06.26 |