● 로그인 페이지
public class MainActivity extends AppCompatActivity {
EditText edt_id, edt_pw;
Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_login = findViewById(R.id.btn_login);
edt_id = findViewById(R.id.edt_id);
edt_pw = findViewById(R.id.edt_pw);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String id = edt_id.getText().toString();
String pw = edt_pw.getText().toString();
if(id.equals("admin") && pw.equals("1234")){
Intent intent = new Intent(MainActivity.this, subActivity.class);
intent.putExtra("id",id);
intent.putExtra("pw",pw);
startActivity(intent);
}
}
});
}
}
id와 pw가 맞으면 id,pw를 가지고 SubActivity로 넘어감
public class subActivity extends AppCompatActivity {
TextView tv_result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
tv_result = findViewById(R.id.tv_result);
// tv_result.setText(getIntent().getStringExtra("id")); <- 한 줄로 가능
//tv_result = findViewById(R.id.tv_result);
Intent intent = getIntent();
String str = intent.getStringExtra("id");
String str2 = intent.getStringExtra("pw");
tv_result.setText(str + "님 로그인 성공! \n비밀번호는 " + str2 + "이다잉");
}
}
Main에서 입력한 로그인 정보가 맞으면 -> Sub에서 id정보 띄우기
● ColorPicker
Main -> Sub -> 다시 Main으로 ( Main에서 뭔가 바뀌게 )
Main에 Sub로 갈 버튼과 OnClickListener 만들고
Sub에 ListView 만들기
strings.xml - 앱에서 사용되는 text들을 관리하는 파일 ▼
<resources>
<string name="app_name">Ex0323_Intent_Login</string>
<!-- ListView에 적용될 문자 데이터 지정 -->
<string-array name="colors">
<item>Red</item>
<item>Green</item>
<item>Blue</item>
</string-array>
</resources>
app_name 바꾸면 어플이름 바뀜
string-array 안에 item으로 들어갈 데이터를 R,G,B로 지정함
다시 Main에서 entries 속성 ▼
만들어둔 colors 지정하면 ListView가 뜬다
◎MainActivity
int requestCode = 1; //요청 코드 값
btn_background = findViewById(R.id.btn_background);
btn_background.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ListActivity.class);
startActivityForResult(intent, requestCode);
}
});
}
}
Main에서 List(sub)로 보내고 startActivityForResult( List로 보낼때)를 사용해서intent로 보내고 requestCode(요청값) 돌아오게 설정한다.
◎ListActivity
public class ListActivity extends AppCompatActivity {
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
lv = findViewById(R.id.listView);
// 리스트뷰의 항복이 선택된 걸 감지하기
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//1. parent -> ListView 자체
//2. view -> 이벤트가 발생한 해당 뷰
//3. position -> 이벤트가 발생한 뷰의 index ( 0, 1, 2 , ...)
//4. id -> 이벤트가 발생한 뷰의 고유 id값 ( position 과 같음)
String choice = "";
if(position == 0){
choice = "#800000"; //빨강
}else if(position == 1){
choice = "#006400"; //초록
}else if(position == 2){
choice = "#191970"; //파랑
}
Toast.makeText(getApplicationContext(), choice, Toast.LENGTH_SHORT).show();
//어떤 색을 선택했는지 저장할 Intent
Intent intent = new Intent();
intent.putExtra("color",choice);
setResult(RESULT_OK, intent);
// 결과가 성공적으로 저장되었다는 코드값 , Android 에서 미리 지정해둔 상수( -1 )
finish();
}
});
}
}
List(sub)에서는 onItemClickListener ( 매개변수 4개 설정됨 )
Intent 안에 값만담으면 돼서 안에 아무것도 넣지 않는다.
setResult( Main으로 되돌릴때 ) , RESULT_OK(결과가 성공적)라는 상수와 intent를 넣어 보내줌
◎MainActivity
public class MainActivity extends AppCompatActivity {
EditText edt_id, edt_pw;
Button btn_login, btn_background;
int requestCode = 1; //요청 코드 값
ConstraintLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout = findViewById(R.id.layout);
btn_background.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ListActivity.class);
startActivityForResult(intent, requestCode);
}
});
}
//onActivityResult
// alt + insert
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//1. requestCode -> 요청코드값 (어떤 버튼을 눌러서 갔다 온건지 구분하기 위함)
//2. resultCode -> 결과 코드값 (결과가 잘 넘어왔는지)
//3. data -> 넘어온 결과값(Nullable - 생략가능한, null 일수도 있음 이라는 뜻)
if (requestCode == this.requestCode){ // color 버튼을 클릭해서 다녀온건지
if (resultCode == RESULT_OK){ //결과가 OK 인지
// Intent에서 값 꺼내기
String color = data.getStringExtra("color");
// 배경색 바꾸기
layout.setBackgroundColor(Color.parseColor(color));
}
}
}
}
그러면 다시 Main에서 그 값을 받아서 배경색을 변경해주기 - onActivityResultOncreate 밖에서 Override 해서 만들기배경색 바꿔야해서 layout속성 바꾸기 위해 id값 설정과 findviewid 해줘야함
게시판에서(main) 로그인 -> 로그인화면(log) -> 로그인 -> 게시판(main)에서 환영합니다로 바꿔주기
◎MainActivity
public class MainActivity extends AppCompatActivity {
Button btn_login, btn_write;
TextView tv_result;
final int LOGIN = 1; //상수는 변수와 구분짓기위해 대문자로 적기!
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_login = findViewById(R.id.btn_login);
tv_result = findViewById(R.id.tv_result);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivityForResult(intent, LOGIN);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == this.LOGIN){ //sub 갔다가 잘 왔는지?
if(resultCode == RESULT_OK){ //성공여부
String id = data.getStringExtra("id");
tv_result.setText(id+"님 ㅎㅇ요");
}
}
}
}
◎LoginActivity
public class SubActivity extends AppCompatActivity {
EditText edt_id, edt_pw;
Button btn_login2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
btn_login2 = findViewById(R.id.btn_login2);
edt_id = findViewById(R.id.edt_id);
edt_pw = findViewById(R.id.edt_pw);
btn_login2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String id = edt_id.getText().toString();
String pw = edt_pw.getText().toString();
if (id.equals("admin") && pw.equals("1234")){
Intent intent = new Intent();
intent.putExtra("id",id); // 회원정보 맞으면 id만 가져가기
setResult(RESULT_OK,intent); //Main 으로 돌아갈때 intent 들고 가기
finish();
}else{
Toast.makeText(getApplicationContext(),"누구세연",Toast.LENGTH_SHORT).show();
}
}
});
}
}
'Android' 카테고리의 다른 글
Adapter -> Custom ListView활용 (0) | 2021.03.25 |
---|---|
Adapter View (0) | 2021.03.24 |
Intent 사용하기 (0) | 2021.03.22 |
Constraint Layout + 주사위게임 만들기 (0) | 2021.03.21 |
View와 xml 이란 (0) | 2021.03.21 |