개발학습일지

[Android Studio] 새로운 미니 창 뜨게하는 showAlertDialog() 함수 만들기 본문

Android Studio

[Android Studio] 새로운 미니 창 뜨게하는 showAlertDialog() 함수 만들기

처카푸 2024. 6. 14. 12:47

새로운 미니 창 뜨게 하는 showAlertDialog() 함수

 

-  showAlerDialog 함수

    private void showAlertDialog() {

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setCancelable(true);
        builder.setTitle("로그아웃");
        builder.setMessage("정말 로그아웃 하시겠습니까?");
        builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.setNegativeButton("NO", null);
        builder.show();

    }

 

- 토큰을 가지고 있는 유저가 로그아웃 하는 로직 추가하기 _retrofit2 사용

    private void showAlertDialog() {

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setCancelable(true);
        builder.setTitle("로그아웃");
        builder.setMessage("정말 로그아웃 하시겠습니까?");
        builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 로그아웃 API 호출하기
                // 1.
                Retrofit retrofit = NetworkClient.getRetrofitClient(MainActivity.this);

                // 2.
                UserApi api = retrofit.create(UserApi.class);

                // 3. 위에서 가져 온 토큰이 있기 때문에, 그것을 사용한다.
                Call<UserRes> call = api.logout("Bearer " + token);

                // 4.
                call.enqueue(new Callback<UserRes>() {
                    @Override
                    public void onResponse(Call<UserRes> call, Response<UserRes> response) {
                        if(response.isSuccessful()){
                            // 토큰 사용하지 않으니까 삭제한다.
                            SharedPreferences sp = getSharedPreferences(Config.SP_NAME, MODE_PRIVATE);
                            SharedPreferences.Editor editor = sp.edit();
                            editor.putString("token", "");
                            editor.commit();

                            Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                            startActivity(intent);

                            finish();
                            return;
                        }else {
                            Toast.makeText(MainActivity.this, "로그아웃에 실패했습니다.", Toast.LENGTH_SHORT).show();
                        }
                    }
                    @Override
                    public void onFailure(Call<UserRes> call, Throwable throwable) {
                    }
                });
            }
        });
        builder.setNegativeButton("NO", null);
        builder.show();