티스토리 뷰

개발/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로 바꾼것 외에는 차이가 없는것 같다;ㅋㅋ

더 좋은 방법이 있을 것 같기도 한데, 혹시 방법을 찾게되면 업데이트 해야겠다.

댓글
공지사항