개발/Android
[Android] 코드 세분화
wnsgur0329
2019. 10. 1. 10:41
회원가입 레이아웃을 구현하는 도중, EditText에 비어있는 칸이 있는지 체크를 할 필요가 있었다. 일단 무작정 짜보았더니 아래 코드가 나왔다.
public boolean emptyCheck(){
if(TextUtils.isEmpty(name.getText())){
Toast.makeText(this, "이메일을 적어주세요.", Toast.LENGTH_SHORT).show();
return true;
}
else if(TextUtils.isEmpty(email.getText())){
Toast.makeText(this, "이메일을 적어주세요.", Toast.LENGTH_SHORT).show();
return true;
}
else if(TextUtils.isEmpty(id.getText())){
Toast.makeText(this, "아이디를 적어주세요.", Toast.LENGTH_SHORT).show();
return true;
}
else if(TextUtils.isEmpty(pw.getText())){
Toast.makeText(this, "비밀번호를 적어주세요.", Toast.LENGTH_SHORT).show();
return true;
}
else if(TextUtils.isEmpty(pwChk.getText())){
Toast.makeText(this, "번호 확인을 적어주세요.", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
코드를 보다 문득, 뭔가 바꿀 수 있을 것 같은데? 하는 마음이 요동쳤다.
우선 빈 칸을 알려주는 것이 Toast로 알려주는것 보단 alertDialog가 나아보였다. 아무래도 사용자의 확인을 받는게 UX적으로 좋을 것 같았기 때문이다.
코드가 긴 alertDialog를 따로 함수로 빼내었다.
private void showDialog(String str) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("알림");
builder.setMessage( str + "을 선택해주세요.");
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) { }});
builder.show();
}
private void showDialog(String str, final EditText et) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("알림");
builder.setMessage( str + "을(를) 기입해주세요.");
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
moveFocus(et);
}
});
builder.show();
}
성별과 연령같은 경우는, 각각 RadioGroup과 Spinner라서 선택해달라는 문구를 사용하기 위해 if문을 사용하여 나누었다. 또, EditText를 매개변수로 받아 et.requestFocus(); 를 통해 확인을 누를 시 해당 칸으로 focus가 옮겨지도록 하였다.
최종적으로 나온 코드는 이렇다.
private boolean isEmpty() {
if(TextUtils.isEmpty(name.getText())) {
showDialog("이름", name);
return true;
} else if(TextUtils.isEmpty(email.getText())) {
showDialog("이메일", email);
return true;
} else if(TextUtils.isEmpty(id.getText())) {
showDialog("아이디", id);
return true;
} else if(TextUtils.isEmpty(pw.getText())) {
showDialog("비밀번호", pw);
return true;
} else if(TextUtils.isEmpty(pwChk.getText())) {
showDialog("비밀번호 확인", pwChk);
return true;
} else if(TextUtils.isEmpty(selectGender)) {
showDialog("성별");
return true;
} else if(TextUtils.isEmpty(selectYears)) {
showDialog("연령");
return true;
}
return false;
}
쓰고보니 Toast를 Dialog로 바꾼것 외에는 차이가 없는것 같다;ㅋㅋ
더 좋은 방법이 있을 것 같기도 한데, 혹시 방법을 찾게되면 업데이트 해야겠다.