1. 메인 액티비티 XML: 사용자 등록 화면
1. 메인 액티비티: 사용자 등록 화면
MainActivity.java
사용자 등록 화면에서는 이메일과 비밀번호를 입력받고, 입력된 데이터를 SharedPreferences에 저장한다.
package com.kks.projectdata;
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, R.string.register_check1, Snackbar.LENGTH_SHORT).show();
return;
}
// 3. 이메일 형식이 맞는지 체크
if (!email.contains("@")) {
Snackbar.make(btnRegister, R.string.register_check2, Snackbar.LENGTH_SHORT).show();
return;
}
// 4. 비밀번호 길이 제약 체크
if (password.length() < 4 || password.length() > 12) {
Snackbar.make(btnRegister, R.string.register_check3, Snackbar.LENGTH_SHORT).show();
return;
}
// 5. 비밀번호가 같은지 확인
if (!password.equals(password2)) {
Snackbar.make(btnRegister, R.string.register_check4, Snackbar.LENGTH_SHORT).show();
return;
}
// 6. 이메일 주소를 SharedPreferences에 저장
SharedPreferences sp = getSharedPreferences("avata", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("email", email);
editor.commit();
// 7. AvataActivity로 이동
Intent intent = new Intent(MainActivity.this, AvataActivity.class);
startActivity(intent);
finish();
}
});
}
}
주석 설명:
- 입력사항들을 가져와 이메일, 비밀번호, 비밀번호 확인을 저장한다.
- 필수 항목 체크.
- 이메일 형식이 맞는지 체크.
- 비밀번호 길이 제약 체크.
- 비밀번호가 같은지 확인.
- 이메일 주소를 SharedPreferences에 저장.
- AvataActivity로 이동.
2. 아바타 선택 화면
AvataActivity.java
사용자가 아바타를 선택하고 선택한 아바타를 저장한다.
package com.kks.projectdata;
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 btnOk;
// 유저가 아바타를 선택하면, 선택한 아바타가 무엇인지 저장하는 용도
// 0 : 아무것도 선택 안한 것, 1 : 토끼, 2 : 거북이
int imageType = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_avata);
imgAvata = findViewById(R.id.imgAvata);
btnRabbit = findViewById(R.id.btnRabbit);
btnTurtle = findViewById(R.id.btnTurtle);
btnOk = findViewById(R.id.btnOk);
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;
}
});
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (imageType == 0) {
Snackbar.make(btnOk, "아바타를 선택하세요.", Snackbar.LENGTH_SHORT).show();
return;
}
// 알러트 다이얼로그를 띄운다.
showAlertDialog();
}
});
}
private void showAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(AvataActivity.this);
builder.setCancelable(true);
builder.setTitle("회원가입 완료");
builder.setMessage("완료하시겠습니까?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(AvataActivity.this, WelcomeActivity.class);
startActivity(intent);
finish();
}
});
builder.setNegativeButton("No", null);
builder.show();
}
}
주석 설명:
- 사용자가 선택한 아바타를 저장.
- 토끼 버튼 클릭 시 토끼 아바타 선택.
- 거북이 버튼 클릭 시 거북이 아바타 선택.
- 확인 버튼 클릭 시 아바타 선택 여부 체크 후 알림 대화상자 표시.
- 알림 대화상자에서 'Yes' 선택 시 WelcomeActivity로 이동.
3. 환영 화면
WelcomeActivity.java
package com.kks.projectdata;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class WelcomeActivity extends AppCompatActivity {
TextView txtWelcome;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
txtWelcome = findViewById(R.id.txtWelcome);
// 앱 내 저장소에 저장된 데이터를 가져온다.
SharedPreferences sp = getSharedPreferences("avata", MODE_PRIVATE);
String email = sp.getString("email", "");
txtWelcome.setText(email + "님 환영합니다!");
}
}
주석 설명:
- SharedPreferences에서 저장된 이메일 주소를 가져와 환영 메시지로 표시.
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오]다른 액티비티로 데이터 전달 시 클래스의 객체를 전달하는 방법 (0) | 2024.06.10 |
---|---|
[안드로이드 스튜디오]RecyclerView와 Adapter를 이용하여 리스트를 화면에 표시하는 방법(추가,수정,삭제) (0) | 2024.06.10 |
[안드로이드 스튜디오]액티비티 간의 백버튼 누를 때 데이터 전달 방법 (0) | 2024.06.07 |
[안드로이드 스튜디오] 액티비티 간의 양방향 데이터 전달방법 (0) | 2024.06.07 |
[안드로이드 스튜디오]액티비티 간의 단반향 데이터 전달방법 (0) | 2024.06.07 |