1. 로그인 페이지/이동
- Home화면
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/cl"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HomeActivity">
<Button
android:id="@+id/btnColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="색상선택"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/etID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="64dp"
android:ems="10"
android:hint="ID를 입력하세요"
android:inputType="textPersonName"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/etPW"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:ems="10"
android:hint="PassWord를 입력하세요"
android:inputType="textPersonName"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="@+id/etID"
app:layout_constraintStart_toStartOf="@+id/etID"
app:layout_constraintTop_toBottomOf="@+id/etID" />
<Button
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="로그인"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="@+id/etPW"
app:layout_constraintStart_toStartOf="@+id/etPW"
app:layout_constraintTop_toBottomOf="@+id/etPW" />
</androidx.constraintlayout.widget.ConstraintLayout>
- Home화면의 ID: - etID: ID 입력창
- etPW: PassWord 입력창
- btnLogin: 로그인 버튼
- Homeactivity
package com.example.ex2209262;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class HomeActivity extends AppCompatActivity {
Button btnColor;
final int COLOR = 5793;
ConstraintLayout cl;
EditText etID, etPW;
Button btnLogin;
final int LOGIN = 1020;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
btnColor = findViewById(R.id.btnColor);
cl = findViewById((R.id.cl));
etID = findViewById(R.id.etID);
etPW = findViewById(R.id.etPW);
btnLogin = findViewById(R.id.btnLogin);
String color = "yellow";
cl.setBackgroundColor(Color.parseColor(color));
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String login_id = etID.getText().toString();
String login_pw = etPW.getText().toString();
// Activity -> Activity로 data 전송
// Intent 객체 생성
Intent intent = new Intent(HomeActivity.this, LoginActivity.class);
intent.putExtra("login_id", login_id);
intent.putExtra("login_pw", login_pw);
startActivityForResult(intent, LOGIN);
}
});
btnColor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(HomeActivity.this, ColorActivity.class);
startActivityForResult(intent, COLOR);
// HomeActivity를 첫화면으로
}
});
}
// onCreate() 끝
// 부모클래스에서 만들어진 기능을 재정의 : Method Overrinding
// Android에서 오버라이딩 단축키 : Ctrl + o
// 다른 액티비티를 갔다가 원래 액티비티로 돌아올 때,
// 호출되는 메소드 중에서 intent값을 꺼낼 수 있는
// onActivityReault() 메소드를 오버라이닝하자
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 이 메소드가 호출되는 시점!!
// 다른 액티비티를 갔다가 원래 액티비티로 돌아왔을때 호출됨!!
if (requestCode == COLOR){
if (resultCode == RESULT_OK){
// intent에서 "color" 키 값을 통해 data 꺼내서
// 배경색깔을 지정!
String color = data.getStringExtra("color");
cl.setBackgroundColor(Color.parseColor(color));
}
}
else if (requestCode == LOGIN){
if (resultCode == RESULT_OK){
cl.setBackgroundColor(Color.parseColor("red"));
}
else if(resultCode == RESULT_CANCELED){
cl.setBackgroundColor(Color.parseColor("blue"));
}
}
}
}
1) 로그인 버튼(btnLogin)을 눌렀을때
- btnLogin.setOnClickListener(new View.OnClickListener() {})
2) ID와 PW입력창의 Text를 문자열 login_id, login_pw에 저장.
String login_id = etID.getText().toString();
String login_pw = etPW.getText().toString();
// Activity -> Activity로 data 전송
// Intent 객체 생성
3) 문자열로 저장된 ID(login_id), PW( login_pw)를 LoginActivvity으로 보내기!(HomeActivity에서 -> LoginActivity로)
Intent intent = new Intent(HomeActivity.this, LoginActivity.class);
intent.putExtra("login_id", login_id);
intent.putExtra("login_pw", login_pw);
4) LOGIN를 intent에 받아옴(LOGIN는 상수여야 하므로 변수선언시 상수로 초기화 시켜야함.)
ex)final int LOGIN = 1020;
- Intent intent = new Intent(HomeActivity.this, ColorActivity.class);
startActivityForResult(intent, LOGIN);
5) requestCode가 LOGIN일때,
resultCode가 RESULT_OK이면 로그인이 성공하고 배경색을 red로,
resultCode가 RESULT_CANCELED이면 로그인이 실패하고 배경색을 blue로 바뀌게 된다.
- else if (requestCode == LOGIN){
if (resultCode == RESULT_OK){
// 로그인 성공
cl.setBackgroundColor(Color.parseColor("red"));
}
else if(resultCode == RESULT_CANCELED){
//로그인 실패
cl.setBackgroundColor(Color.parseColor("blue"));
}
- Loginactivity
package com.example.ex2209262;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
String login_id = getIntent().getStringExtra("login_id");
String login_pw = getIntent().getStringExtra("login_pw");
String s_id = "ai";
String s_pw = "1234";
if(login_id.equals(s_id) && login_pw.equals(s_pw)){
// 로그인 성공
setResult(RESULT_OK);
}
else{
// 로그인 실패
setResult(RESULT_CANCELED);
}
finish(); // 현재창 종료
}
}
- HomeActivity에서
login_id와 login_pw 정보를 전송
내가 정한 id와 pw내에 있다면
로그인 성공을 return
만약, 없다면
로그인 실패를 return
1) home화면의 ID와 PW Intent가 도착. key를 통해 data들을 꺼내기
String login_id = getIntent().getStringExtra("login_id");
String login_pw = getIntent().getStringExtra("login_pw");
2) ID와 PW지정 해주기
String s_id = "ai";
String s_pw = "1234";
※ Java에서 레퍼런스 타입의 data를 비교하기 위해서는
== 비교연산자 대신에 .equals()를 사용한다
"==": 기본자료형만 사용가능(int, float, string...)/ 레퍼런스 타입은 쓰지않음
3) login_id=s_id, login_pw=s_pw이면
setResult 에 RESULT_OK를 보냄
login_id 와 s_id, login_pw 와 s_pw가 같지 않으면
setResult에 RESULT_CANCELED를 보냄
- if(login_id.equals(s_id) && login_pw.equals(s_pw)){ // login_id == s_id 의 뜻 레퍼런스형이기 때문에 equals함수 사용
// 로그인 성공
setResult(RESULT_OK);
}
else{
// 로그인 실패
setResult(RESULT_CANCELED);
}
4) 현재창 종료(전 화면으로)
finish();
'개발 공부 > 안드로이드 스튜디오(코틀린)' 카테고리의 다른 글
안드로이드 스튜디오(문자열 배열, 게시판에 게시글 추가/삭제) (0) | 2023.10.18 |
---|---|
안드로이드 스튜디오(새로운 프로젝트 만들기, ViewBinding 사용법) (0) | 2023.10.18 |
안드로이드 스튜디오(시작/끝으로 이동, 홈화면/색바꾸기) (1) | 2023.10.18 |
안드로이드 스튜디오(나이분류, 두 수 더하기, 이미지버튼) (0) | 2023.10.17 |
안드로이드 스튜디오 사용! (1) | 2023.10.17 |