Android

SharedPreferences 사용하여 회원가입 app 만들기

567Rabbit 2024. 6. 7. 16:26

 

 

 

 

package com.yujinoh.register;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;


import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {

    EditText editEmail;
    EditText editPassword;
    EditText editPassword2;
    Button btnRegister;

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

        editEmail = findViewById(R.id.editEmail);
        editPassword = findViewById(R.id.editPassword);
        editPassword2 = findViewById(R.id.editPassword2);
        btnRegister = findViewById(R.id.btnRegister);

        btnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // 1. 입력사항들을 모두 가져온다
                String email = editEmail.getText().toString().trim();
                String password = editPassword.getText().toString().trim();
                String password2 = editPassword2.getText().toString().trim();

                // 2. 필수항목 체크
                if (email.isEmpty() || password.isEmpty() || password2.isEmpty()){
                    Snackbar.make(btnRegister,"필수항목입니다. 모두 입력하세요.",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                // 3. 이메일 형식이 맞는지 체크
                if (email.contains("@") == false){
                    Snackbar.make(btnRegister,"이메일을 제대로 입력하세요.",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                // 4. 만약에 비번 길이 제약이 있다면,
                if (password.length() < 4 || password.length() > 12){
                    Snackbar.make(btnRegister,"비밀번호 길이를 확인하세요.",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                // 5. 비밀번호가 비밀번호 확인과 같은지 확인한다
                if (password.equals(password2) == false) {
                    Snackbar.make(btnRegister,"비밀번호가 일치하지 않습니다.",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                // 아바타 액티비티를 띄운다
                Intent intent = new Intent(MainActivity.this, AvataActivity.class);
                // 인텐트 데이터 다음으로 넘기기
                // intent.putExtra("email", email);
                startActivity(intent);

                // 이메일 주소를 앱 내 저장소에 저장하는 방법
                SharedPreferences sp = getSharedPreferences("avata_app",MODE_PRIVATE);
                SharedPreferences.Editor editor = sp.edit();
                editor.putString("email",email);
                editor.commit();

                // 백버튼 눌러도 다시 돌아오지 못하게 하기
                finish();

            }
        });
    }
}

 

 

 

 

 

package com.yujinoh.register;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.material.snackbar.Snackbar;

public class AvataActivity extends AppCompatActivity {

    ImageView imgAvata;
    Button btnRabbit;
    Button btnTurtle;
    Button button;
    String email;

    // 유저가 아바타를 선택하면, 선택한 아바타가 무엇인지 저장하는 용도이다.
    // 0 : 아무것도 선택 안한 것이다, 1 : 토끼, 2 : 거북이
    int imageType = 0;

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

        // 전 인텐트로부터 이메일 받기
        // email = getIntent().getStringExtra("email");

        imgAvata = findViewById(R.id.imgAvata);
        btnRabbit = findViewById(R.id.btnRabbit);
        btnTurtle = findViewById(R.id.btnTurtle);
        button = findViewById(R.id.button);

        btnRabbit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imgAvata.setImageResource(R.drawable.rabbit);
                imageType = 1;
            }
        });

        btnTurtle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imgAvata.setImageResource(R.drawable.turtle);
                imageType = 2;
            }
        });

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (imageType == 0) {
                    Snackbar.make(button, "아바타를 선택하세요.", Snackbar.LENGTH_SHORT).show();
                    return;
                }

                // 알러트 다이얼로그를 띄운다.
                showAlertDialog();
            }
        });
    }

    private void showAlertDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(AvataActivity.this);
        builder.setCancelable(false);
        builder.setTitle("회원가입 완료");
        builder.setMessage("완료하시겠습니까?");
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // Yes 버튼을 눌렀을 때의 처리
                Intent intent = new Intent(AvataActivity.this, WelcomeActivity.class);
                // 인텐트 데이터 다음으로 넘기기
                // intent.putExtra("email", email);
                startActivity(intent);

                // 백버튼 눌러도 다시 돌아오지 못하게 하기
                finish();
            }
        });
        builder.setNegativeButton("No", null);
        builder.show();
    }
}

 

 

 

 

 

package com.yujinoh.register;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;


public class WelcomeActivity extends AppCompatActivity {

    TextView textWel;

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

        textWel = findViewById(R.id.textWel);

        // 전 인텐트로부터 이메일 받기
        // String email = getIntent().getStringExtra("email");

        // 앱 내 저장소에 저장된 이메일 데이터를 가져온다
        SharedPreferences sp = getSharedPreferences("avata_app", MODE_PRIVATE);
        String email = sp.getString("email","");

        textWel.setText(email+"님\n"+"회원가입을 축하합니다");
    }
}