반응형
2021.10.28 - [Android] - [Android] Activity와 Intent
[Android] Activity와 Intent
Intent 메시징 객체로 다른 구성 요소로부터 작업을 요청하는데에 사용 인텐트와 구성 요소 간의 통신 방식은 크게 3가지, 서비스 시작 브로드캐스트 전달 액티비티 시작 이 있는데, 다뤄볼 방식
wheneveryouwantsz.tistory.com
로그인이 실행되는 과정과 비슷하게 입력받은 문자열이 특정 문자열에 해당하면 성공창으로, 해당하지 않으면 실패창으로 이동
위처럼 각 activity를 정의하고 구현할 수 있도록 파일 생성
activity_main.xml
로그인창
사용자에게 문자열을 입력받고 데이터를 전송하도록 하기위한 EditText와 Button 생성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<!-- id를 입력받음 -->
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="User Id"
android:id="@+id/userId" />
<!-- pw를 입력받음 -->
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="User Password"
android:id="@+id/userPw" />
<!-- 제출 버튼 -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/submitBtn"
android:text="LOGIN" />
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText userId, userPw;
Button submitBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userId = (EditText)findViewById(R.id.userId);
userPw = (EditText)findViewById(R.id.userPw);
submitBtn = (Button)findViewById(R.id.submitBtn);
// pw용 문자열
String str = "abcdefg";
// id용 List
List<String> strs = new ArrayList<>();
strs.add(str);
strs.add("qwerqwer");
strs.add("asdfasdf");
strs.add("zxcvzxvc");
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// EditText에 입력받은 값을 가져와서 변수에 저장
String id = userId.getText().toString();
String pw = userPw.getText().toString();
Intent intent;
// if 구문으로 각 activity에 서로 다른 데이터를 전송
if(strs.contains(id) && pw.equals(str)){
intent = new Intent(getApplicationContext(), SuccessActivity.class);
// startActivity()가 시작되기 전에 intent.putExtra("호출명", 데이터);로 데이터 전송
intent.putExtra("result", "로그인에 성공하셨습니다.\n" + id + "님 환영합니다.");
}else{
intent = new Intent(getApplicationContext(), FailActivity.class);
intent.putExtra("result", "로그인에 실패했습니다.");
}
startActivity(intent);
}
});
}
}
List와 문자열을 생성해서 아이디가 List 내부의 값과 일치하면서 비밀번호가 문자열과 일치하는 경우에는 성공창으로 이동
activity_success.xml
성공창
전달된 데이터가 입력될 TextView와 누르면 로그인창으로 돌아갈 로그아웃 Button 생성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/logout"
android:text="로그아웃" />
</LinearLayout>
SuccessActivity.java
Activity를 생성하고 Code > Override Methods...를 눌러 onCreate() 생성
public class SuccessActivity extends AppCompatActivity {
TextView tv;
Button logout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_success);
tv = (TextView)findViewById(R.id.tv);
logout = (Button)findViewById(R.id.logout);
// 전달된 Intent를 받기위해 getIntent()로 가져온 intent를 변수에 저장하고
Intent intent = getIntent();
// putExtra()로 전달된 내부의 데이터를 get자료형Extra("호출명")로 빼냄
String result = intent.getStringExtra("result");
// 데이터를 활용
tv.setText(result);
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 해당 Activity를 종료
finish();
}
});
}
}
activity_fail.xml
실패창
전달된 데이터가 입력될 TextView와 누르면 로그인창으로 돌아갈 로그인 다시하기 Button 생성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/backtoLogin"
android:text="로그인 다시하기" />
</LinearLayout>
FailActivity.java
public class FailActivity extends AppCompatActivity {
TextView tv;
Button backtoLogin;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fail);
tv = (TextView)findViewById(R.id.tv);
backtoLogin = (Button)findViewById(R.id.backtoLogin);
Intent intent = getIntent();
String getResult = intent.getStringExtra("result");
Log.d("result: ", getResult + "");
tv.setText(getResult);
backtoLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
'Android' 카테고리의 다른 글
[Android] RecyclerView 와 비동기 통신(Retrofit2) (0) | 2021.11.02 |
---|---|
[Android] ListView로 동적 리스트 추가 (0) | 2021.11.01 |
[Android] ActionBar(액션바) (0) | 2021.10.29 |
[Android] Activity와 Intent (0) | 2021.10.28 |
[Android] Context Menu(컨텍스트 메뉴) (0) | 2021.10.27 |