코드네임 :

📱 모바일프로그래밍 - 데이터 저장소 & 공유환경설정 파일로 데이터 관리하기 📱 본문

백엔드/Android_JAVA

📱 모바일프로그래밍 - 데이터 저장소 & 공유환경설정 파일로 데이터 관리하기 📱

비엔 Vien 2024. 12. 8. 03:26


 

[ 공유 환경 설정 주요 메서드 ]


 

여기선 다 바인딩

 

login 실습

Project11_2 (Login 창 -> Main 창 순으로 뜸 여기선)

 

LoginActivity.java

onCreate 내부 }); 다음

        // SharedPreferences 객체를 생성하여 (pref) "user_details"라는 이름의 저장소에 접근
        // Context.MODE_PRIVATE : 저장소에 해당 어플리케이션만 접근 가능
        SharedPreferences pref = getSharedPreferences("user_details", Context.MODE_PRIVATE);

		// Intent 객체를 생성하여 LoginActivity에서 MainActivity로 화면을 전환할 준비
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);

        //SharedPreferences에(pref) username과 password 키가 저장되어 있는지 확인
        if(pref.contains("username") && pref.contains("password")) {
            startActivity(intent);
        }


        // 로그인버튼 (id: btnLogIn) 버튼 눌렀을 때
        binding.btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            
                // EditText에서 사용자가 입력한 값을 읽어와 각각 username과 password 변수에 저장
                String username = binding.txtName.getText().toString();
                String password = binding.txtPwd.getText().toString();

	
                // username과 password가 비어있지 않을 경우(""와 같지 않은 경우)
                // 즉, 입력값이 비어있지 않을 경우
                if (!username.equals("")&& !password.equals("")){
                    
                    // pref.edit() : SharedPreferences 객체(pref)의 데이터를 수정하거나 추가할 수 있도록 Editor 객체를 생성
                    // editor : SharedPreferences.Editor 타입의 객체
                    SharedPreferences.Editor editor = pref.edit();
                    
                    // SharedPreferences에(pref) username과 password 저장
                    editor.putString("username", username);
                    editor.putString("password", password);
            
                    //저장을 완료
                    editor.commit();
                    
                    Toast.makeText(getApplicationContext(), "로그인이 성공했습니다.", Toast.LENGTH_SHORT).show();
                    startActivity(intent);
                    
                } else{ // 입력값이 비어있다면
                    Toast.makeText(getApplicationContext(), "로그인이 실패했습니다.", Toast.LENGTH_SHORT).show();
                }


            }
        });

 

 

 

MainActivity.자바

onCreate 메소드 내부 }); 다음

        SharedPreferences preferences;   
        
        ~ ~ ~
        
        // SharedPreferences 객체를 초기화하여 "user_details"라는 이름의 저장소에 접근함
        preferences = getSharedPreferences("user_details", Context.MODE_PRIVATE);
        
        // 현재 액티비티인 Main에서 Login 액티비티로 전환하기 위한 intent이름의 Intent 객체 생성
        Intent  intent = new Intent(MainActivity.this, LoginActivity.class);
        
        // TextView(id: resultview)에 환영메시지를 설정
        // SharedPreferencs(변수이름 preferences)에서 username을 가져와 메시지에 포함(값이 없을 경우 null 반환)
        binding.resultView.setText("Hello,"+preferences.getString("username", null));

        // 로그아웃버튼 (id: btnLogOut) 버튼 눌렀을 때
        binding.btnLogOut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // preferences.edit() : SharedPreferences 객체(preferences)의 데이터를 수정하거나 추가할 수 있도록 Editor 객체를 생성
                // editor : SharedPreferences.Editor 타입의 객체
                SharedPreferences.Editor editor= preferences.edit();
                
                // 기록이 지워지게 (자동로그인 안되게 = 로그아웃 처리)
                editor.clear(); // 모든 데이터 삭제
                editor.commit(); // 변경 사항을 저장하고 적용
                
                // 생성해 두었던 Intent 객체를 사용하여 LoginActivity로 화면을 전환
                startActivity(intent);
            }
        });