#21 Preference(프리퍼런스)

자동로그인 구현하기

prefrence를 활용하여 자동 로그인을 구현하는 것을 5주차 목표로 세웠다. 구현을 위해 먼저 회원가입, 로그인 페이지를 만들었다.


회원가입

activity_join.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=".joinActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:fillViewport="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <EditText
                android:id="@+id/joinID"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginTop="30dp"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginBottom="10dp"
                android:layout_weight="1"
                android:ems="10"
                android:hint="ID" />

            <EditText
                android:id="@+id/joinPassword"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_weight="1"
                android:ems="10"
                android:hint="비밀번호"
                android:inputType="textPassword" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:text="@string/joinPasswordText" />

            <EditText
                android:id="@+id/joinName"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginBottom="10dp"
                android:layout_weight="1"
                android:ems="10"
                android:hint="이름" />

            <EditText
                android:id="@+id/joinPhone"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:layout_height="50dp"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginBottom="10dp"
                android:ems="10"
                android:hint="전화번호"
                android:inputType="phone" />

            <EditText
                android:id="@+id/joinAddress"
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:layout_height="50dp"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginBottom="10dp"
                android:ems="10"
                android:hint="우편번호"
                android:inputType="textPostalAddress" />

            <TextView
                android:id="@+id/signagree"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginBottom="10dp"
                android:ems="10"
                android:hint="이용약관"
                android:maxLines="20"
                android:overScrollMode="always"
                android:paddingLeft="10dp"
                android:scrollbars="vertical"
                android:text="@string/agree"
                android:textSize="10dp" />

            <RadioButton
                android:id="@+id/agreeRb"
                android:layout_width="112dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:text="동의함" />

            <RadioButton
                android:id="@+id/notagreeRb"
                android:layout_width="112dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:text="동의안함" />

            <Button
                android:id="@+id/btnSave"
                android:layout_width="match_parent"
                android:layout_height="24dp"
                android:layout_weight="1"
                android:text="회원가입하기" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>

activity_join.png

scroll view를 사용하여 화면을 움직일 수 있도록 하였으며, scrollView 안에 joinID,joinPassword,joinName,joinPhone,joinAddress,agreeRb, notagreeRb,btnSave 을 구현하였다.

agreeRb 와 notagreRb 는 라디오 버튼으로 구현하였고, 중복 선택을 할 수 없다.

java 파일에서는 회원가입 버튼을 누르면 적힌 값들이 file에 저장되도록 하였다. 이때, 아이디가 겹치는지 확인하도록 하였으며 만약 비밀번호가 규칙에 맞지 않는 경우 Toast message를 띄우도록 설정하였다. 그리고 값 중에 공백이 존재하는 경우 Toast 메시지를 띄우도록 하였다.

joinActivity.java