관리 메뉴

나만을 위한 블로그

[Android] 커스텀 다이얼로그로 액티비티 종료하기 본문

Android

[Android] 커스텀 다이얼로그로 액티비티 종료하기

참깨빵위에참깨빵 2019. 12. 7. 18:10
728x90
반응형

써본 적이 없던 커스텀 다이얼로그를 써 보고 싶어서 쓰던 중 확인 버튼을 누르면 액티비티를 종료시켜야 할 상황이 생겼다.

그래서 방법을 생각해봤다.

 

1. 커스텀 다이얼로그의 xml, 자바 파일을 만든다.

2. 자바 파일에서 확인 버튼에 클릭 리스너를 만든다.

3. 클릭 리스너 안에 메인 액티비티를 종료시키는 코드를 넣는다.

 

이런 순서로 구현하면 되겠다 싶어 그대로 해봤다.

그러나 3번에서 막혔다. 다이얼로그는 dismiss()를 써서 종료시킨다고 해도 메인 액티비티는 어떻게 종료시키지?

 

답은 컨텍스트에 있었다.

커스텀 다이얼로그 안에 Context를 전역 변수로 선언하고, 다이얼로그 확인 버튼에서 context 변수를 해당 액티비티로 캐스팅하면 된다.

그러면 이 컨텍스트를 통해 finish()를 호출할 수 있게 되고, 내가 원하는 액티비티를 종료할 수 있게 된다.

 

아래는 내가 사용한 코드다. setOnClickListener() 안의 코드가 람다식으로도 가능하다는 메시지가 나와서 바꿨기 때문에 코드가 람다식 형태다.

 

ok.setOnClickListener(view -> {
Toast.makeText(context, "메인 액티비티 종료", Toast.LENGTH_SHORT).show();
dialog.dismiss();
((MainActivity)context).finish(); <- 이 부분이 중요하다
});

반응형
Comments