[ Do it! ] #6. 도전! - 고객 정보 입력 화면의 구성

ma.caron_g·2022년 3월 1일
0

Do it! - Android Studio

목록 보기
17/18
post-thumbnail

[ 📄 문 제 ]

고객 정보 입력 화면을 만들어 보세요.

이 화면은 고객의 이름, 나이, 생년월일을 입력받기 위한 것으로 이름은 텍스트, 나이는 숫자로 표시합니다.



[ 📚 설 명 ]

  1. 액티비티로 고객 정보 입력 화면을 만듭니다.
  2. 레이아웃이나 상대 레이아웃을 사용하여 이름과 나이를 입력받는 입력상자, 생년월일을 표시하는 버튼 그리고 [저장] 버튼을 구성합니다.
  3. 생년월일을 표시하는 버튼에는 오늘 날짜를 자동으로 표시하며, 버튼을 누르면 [날짜 선택] 대화상자를 띄우고 날짜를 입력받아 표시합니다.
  4. 이름을 넣을 수 있는 입력상자에는 문자열을, 나이를 입력받기 위한 입력상자에는 숫자를 입력할 수 있도록 설정하여 적당한 키패드를 띄우도록 하고 나이는 세자리까지만 입력할 수 있게 만듭니다.
  5. [저장] 버튼을 누르면 토스트로 입력한 정보를 표시합니다.

[ 💻 코 드 ]

[ activity_main.xml ]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/titleLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#BC4300FD">
        <TextView
            android:id="@+id/Title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:text="고객정보 입력"
            android:textColor="#ffffff"
            android:textSize="25sp"
            android:textStyle="bold" />
    </LinearLayout>

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragmentContainerView"
        android:name="com.study.doit.fragment_userInfo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

[ fragment_user_info.xml ]

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragment_userInfo">

    <LinearLayout
        android:id="@+id/txtLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="40dp"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:text="이 름"
                android:textSize="16sp"
                android:textStyle="bold"
                android:layout_gravity="center"/>
            <EditText
                android:id="@+id/edtName"
                android:layout_width="150dp"
                android:layout_height="35dp"
                android:layout_margin="5dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textSize="15sp"
                android:hint="홍길동"
                android:inputType="text"
                android:singleLine="true"
                android:maxLength="16"
                android:background="@drawable/edittext_draw"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:text="나 이"
                android:textStyle="bold"
                android:textSize="16sp"
                android:layout_gravity="center"/>
            <EditText
                android:id="@+id/edtAge"
                android:layout_width="80dp"
                android:layout_height="35dp"
                android:layout_margin="5dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textSize="15sp"
                android:hint="나이"
                android:inputType="number"
                android:singleLine="true"
                android:maxLength="3"
                android:background="@drawable/edittext_draw"/>
        </LinearLayout>
        <Button
            android:id="@+id/btnDoB"
            android:layout_width="200dp"
            android:layout_height="35dp"
            android:layout_margin="5dp"
            android:layout_gravity="center"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:textSize="15sp"
            android:hint="생년월일"
            android:background="@drawable/edittext_draw"/>
        <Button
            android:id="@+id/btnSave"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:layout_gravity="center"
            android:textStyle="bold"
            android:text="저 장"
            android:textSize="15sp"
            android:textColor="#FFFFFF"
            android:background="@drawable/button_draw2"/>
    </LinearLayout>

</FrameLayout>

[ MainActivity.java ]

package com.study.doit;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

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

    }

}

[ fragment_userInfo.java ]

package com.study.doit;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class fragment_userInfo extends Fragment {

    @NonNull
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle saveInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_user_info, container, false);
        Button btnDoB = rootView.findViewById(R.id.btnDoB);
        Button btnSave = rootView.findViewById(R.id.btnSave);
        Calendar calendar = Calendar.getInstance();
        Date currentDate = Calendar.getInstance().getTime();
        btnDoB.setText(new SimpleDateFormat("yyyy/MM/dd", Locale.getDefault()).format(currentDate));

        DatePickerDialog.OnDateSetListener dpDialog = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int year, int month, int day) {
                calendar.set(Calendar.YEAR, year);
                calendar.set(Calendar.MONDAY, month);
                calendar.set(Calendar.DAY_OF_MONTH, day);
                updateDate();
            }

            private void updateDate() {
                String birth = "YYYY/MM/dd";
                SimpleDateFormat sdf = new SimpleDateFormat(birth, Locale.KOREA);
                Button btnDoB = rootView.findViewById(R.id.btnDoB);
                btnDoB.setText(sdf.format(calendar.getTime()));
            }

        };

        btnDoB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new DatePickerDialog(getContext(),android.R.style.Theme_Holo_Light_Dialog_NoActionBar, dpDialog,calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
            }
        });

        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText edtName, edtAge;
                edtName = rootView.findViewById(R.id.edtName);
                edtAge = rootView.findViewById(R.id.edtAge);

                String name = edtName.getText().toString();
                String age = edtAge.getText().toString();
                String date = btnDoB.getText().toString();

                if(name.replace(" ", "").equals("") || age.replace(" ", "").equals("")) {
                    Toast.makeText(getContext(), "정보를 입력해주세요.", Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(getContext(), "이름 : " + name + "/ 나이 : " + age + " / " + date, Toast.LENGTH_SHORT).show();
                }
            }
        });

        return rootView;
    }

}

[ 🖋 디자인 ]


[ 💡 학습한 내용 ]

  • 프래그먼트의 사용 이유를 알았다.
  1. 재사용이 간편하다
  2. 화면 구성을 좀 더 효율적으로 할 수 있다.
  • ViewGroup 객체에 inflate를 이용하여 내가 나타내고자하는 프래그먼트 파일을 지정하여 인플레이션한다.
public class fragment_userInfo extends Fragment {

    @NonNull
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle saveInstanceState) {
    
        ViewGroup 객체명 = (ViewGroup) inflater.inflate(R.layout.xml파일명, container, false);
        // (Layout뷰 객체명.inflate( 인플레이션 할 레이아웃 (프래그먼트), 프래그먼트가 넣어질 부모 레이아웃, 바로 실행 여부);
        
        // 그 후 원하는 코드를 작성.
        
    	return  객체명;
        // 코드가 다 실행되고 난 화면을 부모 레이아웃에 리턴.
    }
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글