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

정말 간단한건데.. 바꾸질 못하겠어요 ㅠㅠㅠ

0 추천

안녕하세요 ㅠㅠㅠ

엄청 간단한 문제를 풀고 있는데.. 왜 바꾸질 못해서 이러고 있는지

고민하고 있는 저도 잘 모르겠습니다 ㅠㅠ..

두개의 에딧텍스트를 받아서 값을 입력하고, 문자출력을 하면

두개의 내용이 이어지고, 지우기를 누르면, 맨 아래의 TextView 값이

지워지고, 색상변경을 하면, 색상이 입혀지게 하는 문제입니다.

그런데 이 모든 기능을 다 완벽하게 만들었는데.. 문제는 Click이벤트로

만들었습니다. 그런데 문제는 아래의 사진과 같이 터치리스너를 사용해

서 바꾸라고 하는데.. 계쏙 바꿔보아도 어디가 잘못되어쓴ㄴ지 잘 모르겠습니다 ㅠㅠ 제 코드를 아래에 기술해보겠습니다 ㅠㅠ

 

 

 

package ex.exam;

import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    Button btn1;
    Button btn2;
    Button btn3;

    EditText ed1;
    EditText ed2;
    TextView t1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn1 = (Button) findViewById(R.id.button);
        btn2 = (Button) findViewById(R.id.button2);
        btn3 = (Button) findViewById(R.id.button3);
        ed1 = (EditText) findViewById(R.id.editText);
        ed2 = (EditText) findViewById(R.id.editText2);
        t1 = (TextView) findViewById(R.id.textView);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str1 =ed1.getText().toString();
                str1 += ed2.getText().toString();
                t1.setText(str1);
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                t1.setText(" ");
            }
        });

        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                t1.setBackgroundColor(Color.RED);
            }
        });
    }
}
Kind카인드 (3,600 포인트) 님이 2016년 10월 3일 질문

1개의 답변

0 추천
 
채택된 답변
setBackgroundColor 이거 때문에 배경이 바뀌네요

예제에 있는 setColor로 사용해 보세요
크라시엘 (2,320 포인트) 님이 2016년 10월 4일 답변
Kind카인드님이 2016년 11월 3일 채택됨
이 문제가 알아본 결과, 터치리스너로 풀수 없는 문제라고 하는데.. 맞나요?
터치리스너는 하드웨어에서 동작하는거라고 어떤분이 그러셔서 ..
이게 맞나요?
터치리스너로 풀수 있습니다.
setOnClickListener 대신
https://developer.android.com/reference/android/view/View.html#setOnTouchListener(android.view.View.OnTouchListener) 로 변경하고,
UI의 처리를 위해 별도 Thread에서 데이터를 업데이트 하게 변경하세요.
http://itmir.tistory.com/366
아하.. 그런데.. 지금 찾아보고 있는 도중 궁금한게 있는데요.
클릭리스너와 터치리스너가 차이가 있나요?
onClickListener는 단순 클릭 이벤트를 받아 이벤트 구현이 가능한 반면,

onTouchListener는

ACTION_UP
ACTION_DOWN
ACTION_MOVE 등 사용자의 손가락 방향, 드래그 등 행동에 맞게 구현, 이벤트 설정이 가능하다.

출처 - http://superfelix.tistory.com/42

팁을 드리자면 'onTouchListener onClickListener 차이' 이런식의 핵심 키워드로

검색하면 금방 찾아보실 수 있습니다.
으 ㅠㅠ 아까 달아주신 답변에 대해서 최대한 문제에 주어진것에 맞게끔 setOnKeyListener()로 풀어보려고 하는데.. 쉽지가 않네요..

ㅠㅠㅠ setOnKeyListener()로 구현을 하기에는 어려움이 많이 뒤따르나요 ㅠㅠ?
...