오늘 배운 것
- Android Studio로 TODO Project App 만들기(2)
Login 화면 만들기
- 자동로그인 체크선택 시 파일을 만들어 체크여부와 아이디 정보를 적어 다시 App을 킬 때 로그인 없이 메인화면을 호출 할 수 있도록 함
- Intent를 이용하여 이동할 페이지에 Id 값을 넘겨 줄 수 있도록 함
- AlertDialog 에 setPositiveButton,setNegativeButton,setNeutralButton 으로 버튼 3개를 추가하고 함수를 추가할 수 있음
package com.example.todo;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.example.todo.domain.User;
import com.example.todo.domain.UserOneResult;
import com.example.todo.retrofit.RetrofitClient;
import com.example.todo.retrofit.UserService;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class LoginActivity extends AppCompatActivity {
private String id, pwd;
private EditText userID, userPassword;
private CheckBox chkRememberMe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
userID = findViewById(R.id.userID);
userPassword = findViewById(R.id.userPassword);
chkRememberMe = findViewById(R.id.chkRememberMe);
Button btnQuit = findViewById(R.id.btnQuit);
Button btnJoin = findViewById(R.id.btnJoin);
Button btnLogin = findViewById(R.id.btnLogin);
btnQuit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showQuitMessage();
}
});
btnJoin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), JoinActivity.class);
startActivity(intent);
}
});
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
processLogin();
}
});
}
private void processLogin() {
id = userID.getText().toString().trim();
pwd = userPassword.getText().toString().trim();
RequestGetUser(id);
}
private void RequestGetUser(String id) {
UserService userService = RetrofitClient.getUserService();
Call<UserOneResult> call = userService.getUser("one",id);
call.enqueue(new Callback<UserOneResult>() {
@Override
public void onResponse(Call<UserOneResult> call, Response<UserOneResult> response) {
if (!response.isSuccessful()) return;
UserOneResult userOneResult = response.body();
User user = userOneResult.getUser();
boolean isSame = compareIdPwd(user);
if (!isSame) {
Toast.makeText(getApplicationContext(),"아이디 또는 비밀번호가 다릅니다.", Toast.LENGTH_LONG).show();
userID.requestFocus();
return;
}
processLoginSuccess();
}
@Override
public void onFailure(Call<UserOneResult> call, Throwable t) {
}
});
}
private void processLoginSuccess() {
if (chkRememberMe.isChecked()) {
saveRememeberMe();
}
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("loginId",id);
startActivity(intent);
finish();
}
private void saveRememeberMe() {
SharedPreferences pref = getSharedPreferences("todo", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("rememberMe", true);
editor.putString("loginId", id);
editor.commit();
}
private boolean compareIdPwd(User user) {
boolean isSame = false;
if (user != null) {
if (pwd.equals((user.getPassword()))) {
isSame = true;
} else {
isSame = false;
}
}
return isSame;
}
public void showQuitMessage() {
AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle("종료")
.setMessage("정말 종료하시겠습니까?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton("예", (dialogInterface, i) -> finish())
.setNegativeButton("아니오", null)
.create();
alertDialog.show();
}
}

Login 성공 시 넘어갈 Main화면에서 Id값이 제대로 넘어오는지 확인
package com.example.todo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
String loginId = intent.getStringExtra("loginId");
textview = findViewById(R.id.textView3);
textview.append( "\n 로그인 아이디 : " + loginId);
}
}

