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

안드로이드에서 클래스 만들어 사용하기

0 추천
et_value1.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				// TODO Auto-generated method stub
				if(s.toString().length() > 0){
					
					if(Integer.parseInt(s.toString()) > 11){
						
						et_foot_right.setText(null);
						Toast.makeText(getApplicationContext(), "10까지 가능합니다.", Toast.LENGTH_LONG).show();
					}
					}
				
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				// TODO Auto-generated method stub
				Log.w("onTextChanged", s.toString());				
			}
			
			@Override
			public void afterTextChanged(Editable s) {
				// TODO Auto-generated method stub
				Log.w("onTextChanged", s.toString());				
			}
		});

에디트 텍스트 값을 체크하는 코드 잆니다.

 

이걸 지금 에디트텍스트마다 다 붙여넣어서 지저분해 보이는데 이걸 따로 빼주고 싶습니다.

그럼 어떻게 해주면 좋나요?

자바파일로 하나 빼줘야 할지 한 액티비티에서 따로 함수를 만들어야 할지..

 

초보라 어떠헏게 해야할지 모르겠습니다. 흉내는 내보았는데 이렇게 하면 당연히 안되는거고..

조언부탁들빈다.

@Override
	public void editTextCheck(EditText value){
		value.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				// TODO Auto-generated method stub
				if(s.toString().length() > 0){
					
					if(Integer.parseInt(s.toString()) > 11){
						
						et_foot_right.setText(null);
						Toast.makeText(getApplicationContext(), "10까지 가능합니다.", Toast.LENGTH_LONG).show();
					}
					}
				
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				// TODO Auto-generated method stub
				Log.w("onTextChanged", s.toString());				
			}
			
			@Override
			public void afterTextChanged(Editable s) {
				// TODO Auto-generated method stub
				Log.w("onTextChanged", s.toString());				
			}
		});
	}

 

브루스웨인 (8,580 포인트) 님이 2013년 9월 17일 질문

2개의 답변

+1 추천
 
채택된 답변

아주 간단한건데 , 너무 어렵게 생각하신 듯 합니다.

아무튼 요청하신대로 대충 CustomTextWatcher 라는 클래스를  구성 해봤습니다.

et_value1.addTextChangedListener(new CustomTextWatcher(getApplicationContext(), et_foot_right));

와 같이 사용하시면 될 겁니다. 

헤당 클래스는 한 activity내에 넣어도 되긴 하지만 oop를 위해서 가급적 별도 파일로 두시는 것을 권장합니다.

public class CustomTextWatcher implements TextWatcher{

 
    Context mContext;
    TextView et_foot_right;
    public CustomTextWatcher(Context context, TextView tv)
    {
        et_foot_right = tv;
        mContext = context;
    }
    
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(s.toString().length() > 0)
        {
            
            if(Integer.parseInt(s.toString()) > 11)
            {
                 
                et_foot_right.setText(null);
                Toast.makeText(mContext, "10까지 가능합니다.", Toast.LENGTH_LONG).show();
            }
        }
    }
    
    @Override
    public void afterTextChanged(Editable s) {
     // TODO Auto-generated method stub
        Log.w("onTextChanged", s.toString());
        
    }
 
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
     // TODO Auto-generated method stub
        Log.w("onTextChanged", s.toString());
        
    }
}
사악미소 (65,330 포인트) 님이 2013년 9월 17일 답변
브루스웨인님이 2013년 10월 24일 채택됨
걍 클래스파일 하나 만들고 거기에 코드 넣고
et_value1.addTextChangedListener(new CustomTextWatcher(getApplicationContext(), et_foot_right));
이렇게 쓰면 되나요?? 자바에서 파일명.메소드명 이런식으로 썼었는데 안드로이드에서는 어케 해야 할지 잘 모르겠네요;;;
0 추천
에디트 텍스트를 확장한 뷰를 만들어서 거기에 해당 기능을 넣고 쓰시는게 좋을듯 싶군요
Gradler (109,780 포인트) 님이 2013년 9월 17일 답변
...