마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

도와주십시요..ㅠ 버튼클릭문제

0 추천

버튼 클릭하면 셋텍스트로 텍스트뷰를 호출합니다.

그 후 버튼을 다시 클릭했을때 원래대로 되돌리게 하려면 코드를 어떻게 짜나요?

온클릭리스너로 처음 클릭시 텍스트뷰호출하는건 알겠습니다.

그러나 다시 클릭하는 그 코드를 모르겠네요...ㅠ

ex) 텍스트뷰 "원래대로"

    버튼1

    버튼1 클릭시 텍스트뷰 "가나다"로 호출,

    버튼1 다시 클릭시 텍스트뷰 "원래대로"로 되돌리기

btn_1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        text_1.setText("가나다");
    }
});

if문이나 switch문으로 하는건가요?

알려주십시요ㅠ

식신왕 (160 포인트) 님이 9월 8일 질문
식신왕님이 9월 8일 수정

1개의 답변

0 추천

아래 처럼 해보세요.

 

private TextView text_1;
private boolean isOriginalText = true;

public void onCreate(...) {
     super.onCreate(...);
     setupViews();
}

private void setupViews() {
    text_1 = findViewById(R.id.text_1);

    btn_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              text_1.setText(getDisplayText());
        }
    });
}

private String getDisplayText() {
    isOriginalText = !isOriginalText;
    return isOriginalText ?: "원래대로" : "가나다";
}

 

isOriginalText라는 멤버 변수를 하나 두고 클릭할 때 마다 값을  true<->false 전환시킵니다. 해당 변수가 true일 때는 "원래대로"를, false일 때는 "가나다"를 리턴해서 text_1에 설정해주시면 됩니다.   멤버변수나 메소드 등의 이름을 무슨 역할을 하는지 명확하게 주시면 코드를 읽기가 더 쉬워집니다. 그리고 가능하면 String값을 직접 사용하는 것 보다는 String resource 를 이용하는 것이 좋습니다.

spark (72,310 포인트) 님이 9월 8일 답변
조언 감사합니다. 해결하였습니다.
...