setText란 xml파일이 아닌 java파일에서
텍스트을 변경할 수 있게 해주는 것이다.
이게 도대체 무슨 소리일까?
*입문자를 대상으로 쓴 글이라
부연설명이 긴 편입니다. 이 점 참고해주시면 감사하겠습니다.
1. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/test1"
android:text="안녕 세상아!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
위에 엄청 긴 코드가 있다.
저 코드를 다 살펴볼 필요는 없다.
스크롤을 내려서 아래의 단 두 줄만 보면 된다.
<TextView
android:id="@+id/test1"
android:text="안녕 세상아!" />
위의 세 줄을 설명해 보자면
1) TextView는 텍스트를 입력할 수 있는 박스를 생성할 때 쓰는 단어다.
파워포인트에서 글자를 입력할 땐 텍스트 박스를 생성하고
그 텍스트 박스 안에 글자를 넣는다. 이 원리와 비슷하다.
안드로이드 스튜디오에서도 글자를 입력하고 싶으면 텍스트 박스를 생성해줘야 한다.
TextView를 입력하면 텍스트를 입력할 수 있는 박스가 만들어지는 것이다.
2) android:text="안녕 세상아!"
텍스트 박스 안에 나는 "안녕 세상아!"라고 작성한 코드다.
3) android:id ="@+id/test1"
반려묘한테 이름을 붙여주듯이
TextView라는 텍스트 박스한테 test1 이라는 이름을 붙여줬다.
이렇게 xml에 코드를 작성하고, java에도 코드를 작성해주면
아래와 같은 이미지가 뜬다.
자바에 쓴 코드는 뒤에서 설명할 거라 일단 일단 생략하려고 한다.
여기서 중요한 건 "안녕 세상아!"란 텍스트다.
나는 "안녕 세상아!"란 텍스트를 이제 "잘가 세상아!"라고 바꾸고 싶다.
그렇다면 어떻게 해줘야 할까?
<TextView
android:id="@+id/test1"
android:text="안녕 세상아!" />
아까 위에서 봤던 두 줄 코드다.
여기서 "안녕 세상아!"를 "잘가 세상아!"로 바꿔주면
텍스트가 바뀔 것이다.
<TextView
android:id="@+id/test1"
android:text="잘가 세상아!" /> //잘가 세상아!로 바꿔줬다.
이런식으로 말이다.
하지만 나는 이런 방법으로 텍스트를 수정하고 싶지 않았다.
정확히는 xml 파일에서 텍스트를 수정하고 싶지 않고,
java 파일에서 텍스트를 수정하고 싶었다.
이때 사용되는 게 setText다.
2. MainActivity.java
package com.chobo.settext;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public
class MainActivity extends AppCompatActivity {
TextView test1; //test1이란 변수 생성
@Override
protected
void onCreate ( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test1 = findViewById(R.id.test1); // activity.xml 파일에 있는 test1과 현재 java파일의 test1을 연결
}
}
setText를 사용하기에 앞서
java 파일에서 해줘야 할 게 있다.
xml에서 만든 아이디와
java의 변수를 findView를 통해 연결하는 걸 잘 아는 분이라면
스크롤을 내려서 아래에 있는 3. setText로 바로 넘어가는 걸 권하고 싶다.
하단의 글은 java파일과 xml 파일 사이로 변수 연결하는 것에 대해
잘 모르시는 분들을 대상으로 쓴 글이다.
우리가 activity_main.xml 파일에서 TextView의 이름을 test1이라고 이름 붙여줬었다.
activity_main.xml 파일에 있는 test1을 java파일에서도 사용할 수 있게
조치를 해줘야 앱에서 사용할 수 있다. 단 두 줄만 작성해주면 된다.
TextView test1;
MainActivity.java 파일에 test1이란 이름을 가진 변수를 생성한다.
앞에 TextView를 붙인 이유는 우리가 변수를 선언할 때
변수의 모양이 어떤 모양인지 알려줘야 하기 때문이다.
c언어를 배웠다면 ina test 1;과 같은 느낌이라고 생각하면 될 것이고
언어를 아직 배우지 않았다면
기업이 음식을 팔 때 그 음식에 어떤 식품첨가물이 들어있는지 뒷면에 표기해서 알려줘야 하는 것처럼
변수도 마찬가지로 이 변수를 선언하기 전에
변수의 모양이 세모인지, 네모인지, 다이아몬드인지 사전에 알려주는 게
암묵적인 약속이라 해당 변수의 모양을 알려주는 거라고 이해하면 된다.
test1이란 변수는 TextView라는 모양(식품첨가물이 들어간)의 변수다.
변수는 어떤 걸 담을 수 있는 그릇에 비유할 수 있는
현재 test1이란 그릇 안에는 아무것도 든 게 없는 껍대기 상태다.
test1 = findViewById(R.id.test1);
위의 코드를 통해 껍데기(test1)안에
activity.xml에 있는 test1을 담아주려고 한다.
길을 찾을 때 지도를 찾아서 원하는 걸 찾듯이
findViewById는 지도와 같은 역할을 한다.
findViewByid란 지도를 켜서 Resource(res) 파일로 들어가서
id 명이 test1를 꺼내와서 test1이란 껍데기에 넣어라는 게 위의 코드다.
즉 res > layout > activity_main.xml 파일에 있는
아이디 명 test1인 아이를 꺼내와서
test1 이란 변수에 저장하란 뜻이기도 하다.
이렇게 되면 activity_main에 있던 test1이란 이름을 가진 TextView(텍스트 박스)가
MainActivity.java에서 생성된 변수 test1에 담겨진다.
서로 다른 파일에 있던 test1들이
이제는 test1 = test1 서로 같아진 것이다.
이제 모든 준비가 끝났다.
3. SetText
맨 처음 글을 시작할 때
setText란 xml파일이 아닌 java파일에서
텍스트을 변경할 수 있게 해주는 것이라고 했다.
MainActivity.java 파일에서 setText를 이용하면
글씨를 바꿀 수 있단 뜻이다.
변수명.setText("바꾸고 싶은 텍스트 입력");
이런 형식으로 setText는 쓰인다.
여기서 변수명엔 변수의 이름인
test1을 넣어주고, 큰 따옴표("")안에는 아무 텍스트를 입력해 주면 된다.
test1.setText("반갑다 친구야!"); //내가 입력한 것
나는 위와 같이 입력해줬다.
코드 전체를 보면 아래와 같다.
package com.chobo.settext;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public
class MainActivity extends AppCompatActivity {
TextView test1;
@Override
protected
void onCreate ( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test1 = findViewById(R.id.test1);
test1.setText("반갑다 친구야!"); //내가 입력한 것
}
}
이제 실행 결과를 확인해 보자.
test1.setText("반갑다 친구야!); 를 입력해 주고 실행을 하면
내가 xml 파일에서 텍스트를 수정하지 않았음에도
"반갑다 친구야"로 텍스트가 변경된 걸 볼 수 있다.
<결론>
setText는 xml 파일이 아닌
java 파일에서 텍스트를 변경하고 싶을 때 사용하는 것이다.
'IT > Android studio' 카테고리의 다른 글
[Android] BottomnavigationView 모든 글자(title) 보이게 하는 방법 (0) | 2022.11.13 |
---|---|
[Android Studio] 타이틀 바(상단 바) 없애기 (0) | 2022.11.05 |
[Android] wrap content와 match parent의 차이 (0) | 2022.08.21 |
[Android] 세로(vertical) 가로(horizontal) 정렬 방법 (0) | 2022.08.20 |
[JAVA] '(파일이름)'을 찾거나 로드할 수 없습니다. 해결방법 (0) | 2022.08.16 |