반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- hive
- math
- Mac
- PySpark
- dataframe
- Kotlin
- google apps script
- SQL
- string
- PANDAS
- gas
- Tkinter
- Redshift
- Python
- numpy
- Google Spreadsheet
- 파이썬
- Java
- Excel
- PostgreSQL
- list
- django
- GIT
- c#
- Github
- Apache
- matplotlib
- array
- Google Excel
Archives
- Today
- Total
달나라 노트
Android Studio - setOnClickListener (버튼 클릭 시 수행할 동작 지정하기) 본문
728x90
반응형
이번엔 버튼을 누르면 TextView의 글자가 바뀌도록 해봅시다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<TextView
android:id="@+id/result_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="36sp"
android:text="This is test text."
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<Button
android:id="@+id/button_test_change"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#676767"
android:text="Button"
android:textColor="#8CB3FF"
app:layout_constraintTop_toBottomOf="@id/result_text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
package com.example.diceroller
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.example.diceroller.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
var btn_change: Button = findViewById(R.id.button_test_change)
btn_change.setOnClickListener() {
text_change()
}
}
fun text_change() {
var textview_result: TextView = findViewById(R.id.result_text)
textview_result.text = "New text"
}
}
위 코드는 binding을 (binding 설정은 해 두었지만) 사용하지 않고 findViewById를 사용한 예시입니다.
버튼에 기능을 부여하는 흐름은 다음과 같습니다.
1. MainActivity class 내부에 버튼의 기능을 담은 function을 생성한다.
2. MainActivity class 내부의 onCreate function 속에 원하는 button의 view를 불러와 객체를 생성한다.
3. 해당 버튼 객체의 setOnClickListener에 1번에서 생성한 function을 넣어준다.
위 코드를 보면 test_change라는 함수는 result_text id인 textview의 글자를 New text로 설정하도록 하고 있습니다.
그리고 이 function을 setOnClickListener에 등록하고있죠.
package com.example.diceroller
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.diceroller.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.buttonTestChange.setOnClickListener() {
text_change()
}
}
fun text_change() {
binding.resultText.text = "New text"
}
}
binding view를 사용하면 좀 더 간단해집니다.
728x90
반응형
'Android' 카테고리의 다른 글
Android Studio - setImageResource (Image View에 image 셋팅해주기) (0) | 2021.03.23 |
---|---|
Android Studio - 주사위 굴리기 (0) | 2021.03.23 |
Android Studio - ViewBinding (0) | 2021.03.23 |
Android Studio - Button android:backgroundTint (버튼 색상 변경하기) & android:textColor (글자 색상 변경하기) (0) | 2021.03.22 |
Android Studio - tools.text (개발용 text 표시하기) (0) | 2021.03.22 |
Comments